netty-websocket-spring-boot-starter icon indicating copy to clipboard operation
netty-websocket-spring-boot-starter copied to clipboard

如何获得HttpSession?

Open koliday opened this issue 4 years ago • 18 comments

以前使用spring-boot-starter-websocket是有办法获取的,现在要如何获取呢?

koliday avatar Oct 02 '19 02:10 koliday

以前使用spring-boot-starter-websocket是有办法获取的,现在要如何获取呢?

不是同一个东西,没办法获取。(一个基于Servlet容器,一个基于Netty。并且也不打算和Servlet容器相关的包集成在一起) 如果你一定要的话,可以自己new一个,然后把相关参数set进去。并将两个session互相引用一下。

YeautyYE avatar Oct 02 '19 14:10 YeautyYE

以前使用spring-boot-starter-websocket是有办法获取的,现在要如何获取呢?

不是同一个东西,没办法获取。(一个基于Servlet容器,一个基于Netty。并且也不打算和Servlet容器相关的包集成在一起) 如果你一定要的话,可以自己new一个,然后把相关参数set进去。并将两个session互相引用一下。

那我前端传参,然后用ParameterMap获取用户信息也可以的对吧

koliday avatar Oct 02 '19 15:10 koliday

那我前端传参,然后用ParameterMap获取用户信息也可以的对吧

是的,前端将参数放在query里面。

YeautyYE avatar Oct 02 '19 15:10 YeautyYE

那我前端传参,然后用ParameterMap获取用户信息也可以的对吧

是的,前端将参数放在query里面。

好的谢谢

koliday avatar Oct 02 '19 15:10 koliday

前端怎么把参数放到query 里面,query 是个map吗

LL3706 avatar Feb 14 '20 09:02 LL3706

前端怎么把参数放到query 里面,query 是个map吗

如果是0.9.0版 可以在OnOpen事件的参数里面加上 @RequestParam MultiValueMap reqMap 如果只需要某个query的时候,可以用 @RequestParam String req

YeautyYE avatar Feb 14 '20 12:02 YeautyYE

https://blog.csdn.net/littleDingDang/article/details/88221953, 你好,我根据这个博客的步骤想实现在onopen的时候获取用户session,也就是httpsession,但是需要在ServerEndpoint增加属性configurator,在onopen方法增加EndpointConfig config参数,我该怎么修改下你的源码呢? 我用的是0.9.0版本

zeroheroo avatar Feb 21 '20 13:02 zeroheroo

https://blog.csdn.net/littleDingDang/article/details/88221953, 你好,我根据这个博客的步骤想实现在onopen的时候获取用户session,也就是httpsession,但是需要在ServerEndpoint增加属性configurator,在onopen方法增加EndpointConfig config参数,我该怎么修改下你的源码呢? 我用的是0.9.0版本

这个文章是基于Servlet容器和spring实现的websocket来配置的。 本框架不兼容Servlet的httpsession,如果要改的话,可以在onopen的时候自己创建httpsession,并将相关参数set进去

YeautyYE avatar Feb 22 '20 18:02 YeautyYE

前端怎么把参数放到query 里面,query 是个map吗

如果是0.9.0版 可以在OnOpen事件的参数里面加上 @RequestParam MultiValueMap reqMap 如果只需要某个query的时候,可以用 @RequestParam String req

前端怎么把参数放到query 里面,query 是个map吗

前端怎么把参数放到query 里面,query 是个map吗

如果是0.9.0版 可以在OnOpen事件的参数里面加上 @RequestParam MultiValueMap reqMap 如果只需要某个query的时候,可以用 @RequestParam String req

是0.9.0最新版本,前段url 需要怎么传map参数,eg:ws://127.0.0.1:8086/ws?reqMap={name=jack,age=23}&req=tom 这样传map参数吗;后端代码我知道可以加注解@RequestParam MultiValueMap reqMap;

LL3706 avatar Feb 23 '20 09:02 LL3706

是0.9.0最新版本,前段url 需要怎么传map参数,eg:ws://127.0.0.1:8086/ws?reqMap={name=jack,age=23}&req=tom 这样传map参数吗;后端代码我知道可以加注解@RequestParam MultiValueMap reqMap;

ws://127.0.0.1:8086/ws?a=b&c=d 以下两种方式都可以

  1. 在后端参数中添加 @RequestParam MultiValueMap map , 这个map中就有两个键值对
  2. 在后端参数中添加 @RequestParam String a,@RequestParam String c , 这里的a 、c 就能拿到query中的a、c的值b、d

YeautyYE avatar Feb 23 '20 09:02 YeautyYE

前端怎么把参数放到query 里面,query 是个map吗

如果是0.9.0版 可以在OnOpen事件的参数里面加上 @RequestParam MultiValueMap reqMap 如果只需要某个query的时候,可以用 @RequestParam String req

前端怎么把参数放到query 里面,query 是个map吗

前端怎么把参数放到query 里面,query 是个map吗

如果是0.9.0版 可以在OnOpen事件的参数里面加上 @RequestParam MultiValueMap reqMap 如果只需要某个query的时候,可以用 @RequestParam String req

是0.9.0最新版本,前段url 需要怎么传map参数,eg:ws://127.0.0.1:8086/ws?reqMap={name=jack,age=23}&req=tom 这样传map参数吗;后端代码我知道可以加注解@RequestParam MultiValueMap reqMap; 第一个问题: 1.前端传参是:ws://127.0.0.1:8086/ws?a=b&c=d&req=tom 后端只能接受到req参数的值,不能接受到reqMap的值,第二种情况就按map 接值,后端map也是null. @OnOpen public void onOpen(Session session, HttpHeaders headers, @RequestParam String req, @RequestParam MultiValueMap reqMap, @PathVariable String userId, @PathVariable Map pathMap){ session.setAttribute("userId", userId); if (!sessionMap.containsKey(userId)) { sessionMap.put(userId,session); } log.info("new connection,在线人数:{}", sessionMap.size()); } 第二个问题: 2.后端能不能既接受map参数(即reqMap),又接受单个参数(即req),后端用这2个参数接@RequestParam MultiValueMap reqMap,@RequestParam String req. 问题是前端该怎么传参ws://127.0.0.1:8086/ws?reqMap={name=jack,age=23}&req=tom

LL3706 avatar Feb 23 '20 10:02 LL3706

reqMap

这样吧,你去掉其他参数,只保留@RequestParam MultiValueMap reqMap,然后打印下里面的东西你就明白了。

YeautyYE avatar Feb 23 '20 12:02 YeautyYE

reqMap

这样吧,你去掉其他参数,只保留@RequestParam MultiValueMap reqMap,然后打印下里面的东西你就明白了。

前端url:ws://127.0.0.1:8086/ws?a=b&c=d&req=tom 我只保留一个map,其他的注解都去掉,打印的还是null @OnOpen public void onOpen(Session session, HttpHeaders headers, @RequestParam MultiValueMap map){ log.info("new connection,map:{}", ,map); }

LL3706 avatar Feb 23 '20 12:02 LL3706

前端url:ws://127.0.0.1:8086/ws?a=b&c=d&req=tom 我只保留一个map,其他的注解都去掉,打印的还是null @OnOpen public void onOpen(Session session, HttpHeaders headers, @RequestParam MultiValueMap map){ log.info("new connection,map:{}", ,map); }

@RequestParam 用的是哪个包的 ?

YeautyYE avatar Feb 23 '20 12:02 YeautyYE

前端url:ws://127.0.0.1:8086/ws?a=b&c=d&req=tom 我只保留一个map,其他的注解都去掉,打印的还是null @OnOpen public void onOpen(Session session, HttpHeaders headers, @RequestParam MultiValueMap map){ log.info("new connection,map:{}", ,map); }

@RequestParam 用的是哪个包的 ?

用的是import org.yeauty.annotation.*; 这个包下面的,用成spring 的那个包程序会起来的,我试过的

LL3706 avatar Feb 23 '20 12:02 LL3706

前端url:ws://127.0.0.1:8086/ws?a=b&c=d&req=tom 我只保留一个map,其他的注解都去掉,打印的还是null @OnOpen public void onOpen(Session session, HttpHeaders headers, @RequestParam MultiValueMap map){ log.info("new connection,map:{}", ,map); }

@RequestParam 用的是哪个包的 ?

用的是import org.yeauty.annotation.*; 这个包下面的,用成spring 的那个包程序会起来的,我试过的

嗯,我知道原因了,这里有个bug。我修复下,明天能用

YeautyYE avatar Feb 23 '20 12:02 YeautyYE

前端url:ws://127.0.0.1:8086/ws?a=b&c=d&req=tom 我只保留一个map,其他的注解都去掉,打印的还是null @OnOpen public void onOpen(Session session, HttpHeaders headers, @RequestParam MultiValueMap map){ log.info("new connection,map:{}", ,map); }

@RequestParam 用的是哪个包的 ?

用的是import org.yeauty.annotation.*; 这个包下面的,用成spring 的那个包程序会起来的,我试过的

嗯,我知道原因了,这里有个bug。我修复下,明天能用

好的,大佬辛苦了

LL3706 avatar Feb 23 '20 12:02 LL3706

好的,大佬辛苦了 感谢你的支持和提醒

YeautyYE avatar Feb 23 '20 12:02 YeautyYE