在nodejs socket中。IO使用单个套接字连接所有模块,这适用于Java websocket实现吗?
例如我应该创建多个serverendpoint
@ServerEndpoint("/ws1")
public class Socket1 {}
@ServerEndpoint("/ws2")
public class Socket2 {}
@ServerEndpoint("/ws3")
public class Socket3 {}
将使用一个套接字连接来处理所有这些?
还是应该使用单个ServerEndpoint并根据我的消息类型(如 )执行操作? @ServerEndpoint(value = "/ws",
encoders = CommandEncoder.class,
decoders = CommandDecoder.class)
public class Socket {
@OnMessage
public void onMessage(Command message, Session session){
switch(message.type){
case SomeAction:dosomething(message,session);break;
case AnotherAction:doAnotherThing(message,session);break;
}
}
}
我只能从纯粹个人的角度说,您建议的处理传入消息的两种方法都是合法的。
但是除了这些之外(即使这可能不满足您的需求),您可以使用URI路径模板来指定嵌入在URI中的变量。在这里,您将只有一个ServerEndpoint
,然后检索路径变量并检查它,以便根据替换的参数拾取您想要流的服务。
@ServerEndpoint(value = "/ws/{wsQualifier}",
encoders = CommandEncoder.class,
decoders = CommandDecoder.class) {
@OnMessage
public void onMessage(Command message,
Session session,
@PathParam("wsQualifier") int ws) {
switch(ws) {
case 1:dosomething(message,session);break;
case 2:doAnotherThing(message,session);break;
}
}
}