在nodejs中,socket.io对所有模块使用单个套接字连接,这是否适用于java websocket实现?
例如
我应该制作多个ServerEndPoints
@ServerEndpoint("/ws1")
public class Socket1 {}
@ServerEndpoint("/ws2")
public class Socket2 {}
@ServerEndpoint("/ws3")
public class Socket3 {}
是否会使用单个套接字连接来处理所有这些连接?
或sholud我使用单个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;
}
}
}
答案 0 :(得分:2)
我只能说,从纯粹的个人观点来看,您建议处理传入邮件的方式都是合法的。
但除此之外(尽管这可能不符合您的要求),您可以使用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;
}
}
}