NutzCN Logo
问答 高级weesocket使用wsid怎样处理
发布于 2501天前 作者 qq_ddb9f080 1703 次浏览 复制 上一个帖子 下一个帖子
标签:

通过ioc注入上述的MyWebsocket
@Inject
protected MyWebsocket myWebsocket;

public void sayhi(String wsid) {
myWebsocket.sendJson(wsid, new NutMap("action", "layer").setv("msg", "hi"));
}

public void sayhi(Httpsession session) {
myWebsocket.sendJson(session.getId(), new NutMap("action", "layer").setv("msg", "hi"));
}
这个里面的wsid 我该传什么呢,在主模块中式试了httpsession,取到的id和 onopen中 wsid存的数据不一致,直接用session时为空。

5 回复

这个问题前2天就有人问题过, WebSocket Session跟HttpSession不是同一个的, 看最新快照版的nutz-plugins-websocket

快照版我也试了 还是取到的id不一致,我在主模块应该是取哪个对象的id 是WebSocket Session还是HttpSession

@qq_ddb9f080 你理解错了,是wshandler里面有HttpSession了,你可以覆盖setHttpSession,把websocket id赋值给session不就好了?

@Override
public WsHandler createHandler(Session session, EndpointConfig config) {
SimpleWsHandler handler = new SimpleWsHandler(this.roomPrefix);
handler.setRoomProvider(this.roomProvider);
handler.setSession(session);
handler.setHttpSession((HttpSession) session);
return handler;
是重写方法吗?这个报不能强转

那是onOpen方法里面会调用的, 不需要你在createHandler里面设置

添加回复
请先登陆
回到顶部