NutzCN Logo
问答 websocket 注解了onopen不触发?
发布于 2598天前 作者 小小小郑 8554 次浏览 复制 上一个帖子 下一个帖子
标签:

之前在社区里看到过有人出现过这个问题,但是现在找了半天也找不到,忘记在哪了,大神能不能帮俺看看?



public class NutzWsServer extends AbstractWsEndpoint{ @Inject Dao dao; /**用来存放 openid---->wsid映射 **/ Map<String,String> openIdMap = new HashMap<String,String>(); @OnOpen public void onOpen(Session session, EndpointConfig config,@PathParam("roomId") String roomId, @PathParam("openId") String openId){//用户的openid是用来识别用户的sessionId,当需要单独推送时通过openid查找 //设置openid和wsid之间映射 openIdMap.put(openId, session.getId()); System.out.println("roomId ="+roomId+" openId="+openId); //调用父类的open super.onOpen(session, config); this.roomProvider.join(roomId, session.getId()); }

控制台没有反应,没有sysout信息,但是提示成功连接了,如下
2017-11-12 13:31:35,221 org.nutz.plugins.mvc.websocket.handler.AbstractWsHandler.join(AbstractWsHandler.java:50) DEBUG - session(id=0t8cejoqp2i5gqkg1agao9onvn) join room(name=wsroom:home)

5 回复

不好意思 好像是没找到映射
.impl.UrlMappingImpl.get(UrlMappingImpl.java:110) DEBUG - Search mapping for [GET] path=/nutzWsServer/{roomId}/{openId} : NOT Action match
2017-11-12 13:46:53,980 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'nutzWsServer'<class com.game.brag.server.NutzWsServer>
2017-11-12 13:46:53,989 org.nutz.plugins.mvc.websocket.handler.AbstractWsHandler.join(AbstractWsHandler.java:50) DEBUG - session(id=o0e164pif6j8qp94eb94e7ucq7) join room(name=wsroom:home)
用nutz的ws之后,@PathParam("roomId") String roomId是不是不能用了,只能从HttpSession获取?我映射地址是这样的

@ServerEndpoint(value = "/nutzWsServer/{roomId}/{openId}", configurator=NutWsConfigurator.class)

要覆盖相同参数的onOpen方法,使用@OnOpen注解不行的

我不是要覆盖,我要用父类的onpen方法,同时我要在自己的ws中调用到链接时触发的onopen

意思是说只能覆盖掉才能调到@onpen注解的事件吗

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