SFSEventType ENUM and Example Programs (com.smartfoxserver.v2.core.SFSEventType)


SFSEventType

An Enum which consists the events which are raised and handled by smartfoxserver some of those are.

Sno EventType Description
1 SERVER_READY The event is fired by SmartFox when the server engine has completed the boot phase.
2 USER_LOGIN The event is fired when a User sends a login request.
3 USER_JOIN_ZONE The event is fired after a successful User login.
4 USER_JOIN_ROOM The event is fired after a User has joined a Room.
5 ROOM_VARIABLES_UPDATE This event is fired when a one or more Room Variables are set.
6 USER_LEAVE_ROOM The event is fired after a User has left a Room.
7 USER_DISCONNECT The event is fired after a User disconnects or is disconnected.
8 PUBLIC_MESSAGE This event is fired when a public message is sent by a client.
9 PRIVATE_MESSAGE This event is fired when a private message is sent by a client.
10 USER_RECONNECTION_SUCCESS The event is fired when the SRS (smart reconnection system) option is turned on and a User was successfully reconnected.

Note:-

  • All these Events are related to server related, means these event are handled at server side only where as client's will fire these type of requests
  • In order to handle these events in our code/program we need to register corresponding handler class for the events. (means we need to associate a class when that type of event fired/occurred).
  • Through method addEventHandler() of SFSExtension we can register the events like
    addEventHandler(SFSEventType.USER_LOGIN, MyLoginEventHandler.class).
    addEventHandler(SFSEventType.USER_JOIN_ZONE, MyZoneJoinEventHandler.class).
  • In the above addEventHandler() signatures indicates whenever USER_LOGIN request arrived from client then "MyLoginEventHandler" will be fired similarly the other request also.
  • In order to handle these events the java class must be a subclass of "BaseServerEventHandler"
  • In the BaseServerEventHandler a method named public void handleServerEvent(ISFSEvent event) will be fired when event fired.
  • Most of the Events will consist the parameters, these parameters will attain the information of client request.
  • If the USER_LOGIN event fired what we need is "username","password" etc.. these data are came as parameter, those can be fetched using handleServerEvent(ISFSEvent event).

Sample Code Snippets:-

Registering Events With HandlerClasses

For the sake of less code lines I am using Singleclass (MyEventHandler) to handle all events.

  • addEventHandler(SFSEventType.USER_LOGIN, MyEventtHandler.class);
  • addEventHandler(SFSEventType.USER_LOGIN, MyEventHandler.class);
  • addEventHandler(SFSEventType.USER_JOIN_ZONE, MyEventHandler.class);

MyEventHandler.java snippet

public class MyEventHandler extends BaseServerEventHandler {
public void handleServerEvent(ISFSEvent event) throws SFSException {
    SFSEventType eventtype = event.getType();
    System.out.println("Event Fired "+eventtype+"\t time"+new Date());
  }
}

MyEventHandler.java SNIPPET WITH PARAMETERS CONCEPT

public class MyEventHandler extends BaseServerEventHandler {
    public void handleServerEvent(ISFSEvent event) throws SFSException {
      SFSEventType eventtype = event.getType();
        System.out.println("Event Fired "+eventtype+"\t time"+new Date());
        switch(eventtype){
        case SFSEventType.USER_LOGIN:
          User user = (User)event.getParameter(SFSEventParam.USER);
          String loginname = (String) event.getParameter(SFSEventParam.LOGIN_NAME);
          String password = (String) event.getParameter(SFSEventParam.LOGIN_PASSWORD);
          System.out.println(eventype +" Request Arrived From User "+user.getName()+"\t With LOGIN_NAME "+loginname+"\t password "+password);
          break;
        case SFSEventType.USER_DISCONNECT:
          user = (User)event.getParameter(SFSEventParam.USER);
          System.out.println(eventype +" Request Arrived From User "+user.getName());
          break;
        case SFSEventType.USER_JOIN_ZONE:
          user = (User)event.getParameter(SFSEventParam.USER);
          System.out.println(eventype +" Request Arrived From User "+user.getName());
          break;
        }
    }
}
Copyright © 2018-2020 TutorialToUs. All rights reserved.