在java(jsp)中可以很轻松的获得当前会话id,只需要,session.getId(),即可,但是在nodejs中,通过req.sessionID得到的值是undefined,要怎样才能获得session id呢。还有个问题:1.我用socket.io连接服务器,为什么每次刷新页面,sessionid都会变呢,记得在java中只要不关闭所有页面session id是不会变得啊 2.socket.io中通过client.id获得的session id和express中的session id是一个吗?
我用req.session.varname="abc";为什么提示500 TypeError: Cannot set property ‘varname’ of undefined呢?我看网上的例子都是这么用的,是不是在使用session前要先创建啊?
@sunuxreg 你这个session id指的到底是什么?你是不是以为这个是java中的jsessionid?java中的那个是应用服务器自己生成的,而且这个jsessionid跟你也没多大关系,除非你禁用了javascript,需要它来重写。但是也不必手动操作啊。
我指的session ID就是服务器发给客户端,用来区分不同页面连接的一串随机数啊。 是这样的,我在用socket.io实现一个聊天室。在两个人聊天的情况下(类似于人人网的悄悄话),应该通过sessionid将详细推送到指定的客户端。但是我发现,每次客户端在刷新之后sessionid都会变化。这样在用户刷新页面后就再收不到信息了。 我就是想看看express中的sessionid和socketio里的sessionid是不是同一个。
@sunuxreg 哦,聊天室啊。这个我做过,你这个方案不行。可以这样:
- 在服务端保存一个userList={},key是用户的id,这个id可以以cookie的形式加密后种到用户浏览器,value是该用户每个浏览器tab页的socketio对象(即io.sockets.on('connection’, function(client))中的client)。
- 点对点发送时,传入目的user的id,然后在userList总找出目的用户的所有tab页对应的client对象,然后emit相应信息即可。