netty-websocket-spring-boot-starter
netty-websocket-spring-boot-starter copied to clipboard
@OnMessage不支持@PathVariable String类型数据接收
@OnMessage方法的String参数都会被赋值成发送的信息,@PathVariable会失效
OnMessage是用来接收websocket消息的,websocket消息不是http请求,不会有url上的参数
websocket消息是建立连接之后的信息传输,连接地址的信息也是可以获取到的。 我看了你的实现,OnMessage且String参数的会直接赋值为发送信息,其他类型的还是会走@PathVariable的参数获取
@OnMessage public void onMessage(String message,@PathParam("key") String key ) {
Spring的WebScoekt可以获取链接地址里的参数,如果可以获取,会减少业务编码的复杂度
@OnMessage public void onMessage(String message,@PathParam("key") String key ) {
Spring的WebScoekt可以获取链接地址里的参数,如果可以获取,会减少业务编码的复杂度
没有太大必要性,毕竟这个是OnOpen的时候就确定的。 如果需要,自己找个地方放一下就行,框架强制存一份相对比较重,不合适
倒不是要框架去存一份,你写的是满足链接地址上取值的,但是这必须是其他类型不能是String。 String类型不支持因为你的实现如此,onMessage方法中的所有String字段都会赋值上msg。
倒不是要框架去存一份,你写的是满足链接地址上取值的,但是这必须是其他类型不能是String。 String类型不支持因为你的实现如此,onMessage方法中的所有String字段都会赋值上msg。
连接只有在客户端发起http请求的时候才有,后面发消息的时候不存在连接,只有msg。 不存的话,不可能拿得到
在握手完毕建立连接后,http相关请求行,请求头都应该抛弃掉,成为一个纯粹的websocket通道
要是纯粹是这样也没有问题,open的时候可以把信息存在session中,发送信息的时候在session中获取。 但是现在是支持其他类型,单单不支持String,所以我提了这个问题。
要是纯粹是这样也没有问题,open的时候可以把信息存在session中,发送信息的时候在session中获取。 但是现在是支持其他类型,单单不支持String,所以我提了这个问题。
onMessage是被框架回调的,支持其他类型你如何使用呢
可能纯粹是这样也没有问题,打开的时候可以把信息存在会话中,发送信息的时候在会话中获取。但是现在是支持其他类型,单单不支持字符串,所以我提了这个问题。
onMessage 是被框架画面的,支持其他类型的你如何使用呢
onMessage(Session session, String message, @PathVariable Integer xxx,@PathVariable Integer xx) 这样是可以获取到路径上xxx和xx参数的ws://test/{xxx}/{xx}
这样应该能满足你的需求
放到链接后面拼装的参数里: "?a=b&c=d", 就可以通过这个对象拿到 @RequestParam MultiValueMap reqMap
放到链接后面拼装的参数里: "?a=b&c=d", 就可以通过这个对象拿到
@RequestParam MultiValueMap reqMap
我试试
我也遇到这个问题了 onClose onEvent 啥的填上 @RequestParam String uid 都是ws链接过来的key 只有onMessage上面@RequestParam String uid是客户端发来的消息 这个设计感觉不合理 很容易误解 这个问题我通过私有变量存一份也可以解决