gpt4 book ai didi

JAVA EE 7 WebSocket 实现

转载 作者:行者123 更新时间:2023-12-02 05:40:04 25 4
gpt4 key购买 nike

在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;
}
}
}

关于JAVA EE 7 WebSocket 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24596642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com