2 qq 31531483 qq_31531483 于 2016.03.16 15:17 提问

WebSocket获取的登录用户的信息

WebSocket怎么获取放在session里的登录用户的信息?求指教

7个回答

u011489205
u011489205   2016.03.17 11:21
已采纳

你上面提到的其实并不是乱码,而是urlencode编码之后的字符序列。你可以使用以下代码进行解码:

 String decodeStr = URLDecoder.decode(queryStr, "utf-8");

解码之后再做分析。

qq_31531483
qq_31531483 非常谢谢你,已经完美解决了!
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.16 19:28

这个需要客户端服务器端配合,服务器端有用户信息,客户端去连接获取。用你使用的语言+web socket去google,就会有代码的。

u011489205
u011489205   2016.03.16 19:34

1.首先你要区分是HttpSession还是Websocket会话session。
2.HttpSession这里不讲,我想说的Websocket的会话session。你可以在websocket服务器端维护一个
Map map = new HashMap();
其中Session可以在每个Websocket通信的回调函数中作为参数传入,会话会帮你维护这整个session,会话期间整个session不会改变。UserInfo可以通过传入的Session为key操作
map获取。因为是全局的map,所以在访问的时候一定要注意互斥访问,记得加锁哦。

u011489205
u011489205 回复一米阳光三寸暖: 使用String name = URLDecoder.decode(queryStr, "utf-8");解码queryString()获取的字符串
2 年多之前 回复
u011489205
u011489205 回复一米阳光三寸暖: 看我下面推荐的方案
2 年多之前 回复
qq_31531483
qq_31531483 可是我应该怎么在打开管道的时候把前台的用户信息传过来呢?打开的时候不是会触发onopen事件吗?然后我想把前台登录的用户传到onopen事件里作处理,我在建立握手连接的时候直接在路径后面加的“?”传值,去onopen方法参数的session里取,session.getQueryString,得到了一个字符串,如果用户名是英文可以,但是如果是中文就会是乱码,好像也不是乱码,就像是把用户名加密了一样,类似于这种:%C%E%T... 。不知道是什么的原因
2 年多之前 回复
u011489205
u011489205   2016.03.16 19:36

"Map map = new HashMap();"

u011489205
u011489205   2016.03.16 19:39
 Map<Session, UserInfo> connectmap = new HashMap<>();//session 是Websocket会话,UserInfo 是你自己的用户信息bean,当然也可以是map
u011489205
u011489205   2016.03.17 11:14

在服务器类上加上一下注解

 @ServerEndpoint(value = "/websocket/signalmonitor/{nickname}")

start方法入参格式如下:

 @OnOpen
    public void start(@PathParam("nickname")String nickname, Session session) {
    }

前段调用参数如下:

 Chat.initialize = function() {
        if (window.location.protocol == 'http:') {
            Chat.connect('ws://' + window.location.host
                    + '/websocket/websocket/signalmonitor/tony');
        } else {
            Chat.connect('wss://' + window.location.host
                    + '/websocket/websocket/signalmonitor/tony');
        }
    };

基于路径的参数传递,服务器接受到的就是tony。

u011489205
u011489205 回复一米阳光三寸暖: 那得看你前台传递的参数是什么编码呀,有可能是ISO-8859-1呢或者gbk,视情况改变编解码参数
2 年多之前 回复
qq_31531483
qq_31531483 这个我之前试过了,中文还是显示乱码
2 年多之前 回复
xiumu_
xiumu_   2016.03.17 20:59

Websocket里面通过注解以及方法也是可以获取到http协议的session的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
springmvc websocket 用户挤退登陆
springmvc4.0 websocket实现用户登录挤退功能,即类似QQ,B地账号登陆,A地被退出。Mysql数据库与tomcat服务器,将脚本在执行,运行工程,登录即可查看效果。
用webSocket发送消息怎么确定用户收到消息了呢
用webSocket发送消息怎么确定用户收到消息了呢 [问题点数:40分]             不显示删除回复           显示所有回复            显示星级回复           显示得分回复            只显示楼主          收藏 sinat_24367905 sinat_24367905 
【websocket】——用户登录实现广播
咱们一般用的聊天软件都是先登录,然后会有一个提示谁上线的情况。其实这个操作是一个广播的过程。本文主要讲解利用websocket实现用户登录,并且简单的广播功能。 主要分为两大功能块 1、登录跳转    这个过程和普通系统一样,jsp—》Servlet—》重定向(chat.jsp),如有不理解的直接看代码吧。 JSP //跳转到LoginServlet中
WebSocket之获取HttpSession
WebSocket之获取HttpSession 由于WebSocket与Http协议的不同,故在使用常用的HttpSession方面就存在了一些问题。通过google翻阅到了在onOpen方法下使用HttpSession的方法。 新建一个GetHttpSessionConfigurator类并继承Configurator类 package per.zww.web; import j
WorkerMan学习篇:websocket+workerman聊天功能(二):同步在线用户列表
上节课(http://blog.csdn.net/github_26672553/article/details/54932788)我们已经完成了聊天功能的权限(用户名必须)认证。 这节课我们来完成,websocket客户端页面中『所有用户』显示出,连接到我们服务端的所有客户端用户。1.在服务端验证用户登录后,就把保存的客户端信息,发生给客户端//一旦有用户登录就把保存的客户端信息发送过去 $co
利用websocket同账号登录WEB系统自动T除前一个登录者并且页面弹出消息提示
以下为websocket  js代码 var userId = $('#userId').val(); $(function () {     if (userId != null && userId != '') {         webSocketMsg();     } }); // 获取WebSocket推送的数据 function webSocketMsg()
WebSocket给一个id发消息
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
spring boot + webSocket 实现简单会话与在线人数统计的demo
webSocket推送是常用于生产项目的模块,在我们部门做的一个汇报演示的demo中遇到了webSocket的一些问题。 自己下来看看了看webSocket的东西,结合spring boot 做了一个简单的demo; 介绍的部分大家可以参考众多的帖子,度娘 http://www.cnblogs.com/wei2yi/archive/2011/03/23/1992830.html http:
SpringBoot中建立WebSocket连接(STOMP实现发送消息给指定用户)
原文来自:https://blog.csdn.net/qq_28988969/article/details/78134114?locationNum=9&amp;amp;fps=1十分感谢博主解决了我的人生大事啊!使用STOMP实现发送消息给指定用户步骤如下:添加pom文件依赖书写客户端用户实体类书写客户端渠道拦截适配器配置websocket stomp书写控制层书写客户端1.添加pom文件依赖&amp;lt;...
SpringBoot-WebSocket广播消息+单点消息(指定用户发送消息)
前言关于Springboot中WebSocket的介绍这里就不赘述了。网上还是有比较多的介绍。本文主要解决的问题是广播消息(某个主题的),特定用户的消息发送。废话不多说,开始我们的实现。环境这里只罗列核心的技术点。 jdk :1.8 maven :3.X Spring boot:1.5.2.RELEASE WebSocket:spring-boot-starter-web