I am trying to create extension that will detect USER_DISCONNECT event and dispatch notice to AS 3.0 client side with the name of the user who disconnected. Here what i have so far:
Code: Select all
package sfs2x.extension.userdisconnect.src;
import com.smartfoxserver.v2.core.SFSEventType;
import com.smartfoxserver.v2.extensions.SFSExtension;
public class UserDisconnectExtension extends SFSExtension
{
@Override
public void init()
{
trace("Initialising SmartFox Extension example");
addEventHandler(SFSEventType.USER_DISCONNECT, UserDisconnectHandler.class);
addEventHandler(SFSEventType.USER_LOGOUT, UserDisconnectHandler.class);
addEventHandler(SFSEventType.USER_LEAVE_ROOM, UserDisconnectHandler.class);
}
@Override
public void destroy()
{
super.destroy();
removeRequestHandler("example_request");
removeEventHandler(SFSEventType.USER_DISCONNECT);
}
}Code: Select all
package sfs2x.extension.userdisconnect.src;
import com.smartfoxserver.v2.core.ISFSEvent;
import com.smartfoxserver.v2.core.SFSEventParam;
import com.smartfoxserver.v2.entities.User;
import com.smartfoxserver.v2.entities.data.ISFSObject;
import com.smartfoxserver.v2.entities.data.SFSObject;
import com.smartfoxserver.v2.exceptions.SFSException;
import com.smartfoxserver.v2.extensions.BaseServerEventHandler;
public class UserDisconnectHandler extends BaseServerEventHandler
{
@Override
public void handleServerEvent(ISFSEvent arg0) throws SFSException
{
User user = (User)arg0.getParameter(SFSEventParam.USER);
trace("Event Received. User has disconnected: " + user.getName());
//Same string as per SmartFoxClient's onExtensionResponse() function.
//Returns some mock data to the client
send("server_return_data", getReturnData(), user);
}
public ISFSObject getReturnData()
{
ISFSObject returnData = SFSObject.newInstance();
returnData.putInt("foo", 123);
return returnData;
}
}Code: Select all
sfs.addEventListener(SFSEvent.EXTENSION_RESPONSE, onExtensionResponse);
private function onExtensionResponse(event:SFSEvent):void
{
MonsterDebugger.trace(this, "[SmartFoxConnector] Got an extension response!");
var params : ISFSObject = event.params.params;
var cmd : String = event.params.cmd;
switch(cmd)
{
//Refer to the java UserJoinedRoomHandler class to see where
//this string is sent from
case "server_return_data":
MonsterDebugger.trace(this, "Returned value of params.foo: " + params.getInt("foo"));
break;
}
}
But when i close a flash player window with game instance running in it no event gets received by client side. Can anyone please help me, what am i doing wrong here?"Initialising SmartFox Extension example"
Thanks in advance,
Best regards