Node.js Socket.io、Codeigniter、Redis会话存储创建推送通知
我有一个codeigniter应用程序,我想实现推送通知。我使用mysql作为后端数据库,但我使用redis作为会话存储,因此我可以将其用于节点(只是首选项)。当用户连接到节点时,他们通过上的查询参数传递该节点的会话idNode.js Socket.io、Codeigniter、Redis会话存储创建推送通知,node.js,socket.io-1.0,Node.js,Socket.io 1.0,我有一个codeigniter应用程序,我想实现推送通知。我使用mysql作为后端数据库,但我使用redis作为会话存储,因此我可以将其用于节点(只是首选项)。当用户连接到节点时,他们通过上的查询参数传递该节点的会话id io.connect('http://123.45.67.89:3434', { query: "sessId="+sessionId }) 在服务器上,我得到如下结果: io.set('authorization', function(handshakeData, acce
io.connect('http://123.45.67.89:3434', { query: "sessId="+sessionId })
在服务器上,我得到如下结果:
io.set('authorization', function(handshakeData, accept) {
// get user details from redis using the session id sent here
console.log('User Session Id: ', handshakeData._query.sessId);
accept(null, true);
});
我能够从redis中获取用户数据,以保存已连接用户的列表
我想在一个数组中保存一个已连接用户的列表,其中包含他们的profile_id和socket.id
client_list[user.profile_id] = socket.id;
所以我可以通过id搜索用户,获取他们的套接字连接id,并向该用户发送一个通知,不管是出于什么原因
我的问题是,我可以在授权事件中发送sessionId,但无法获取socket.id;我可以在连接事件中获取socket.id,但无法在该事件中传递数据
如何在连接到socket.io服务器时发送会话id并获取socket.id
感谢高级:)事实证明,您可以在连接事件中访问授权事件中发送的查询中的数据,如:
socket.request._query.sessId
(sessiond是从客户端连接查询发送的自定义密钥,请参见问题以获得澄清)
通过这种方式,您可以从连接事件的查询中捕获users socket.id和数据