我有一个要为其实现推送通知的 codeigniter 应用程序。我使用 mysql 作为后端数据库,但我使用 redis 作为会话存储,所以我可以将它与节点一起使用(只是偏好)。当用户连接到节点时,他们通过查询参数传递会话 ID
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 但无法在该事件中传递数据。
如何发送会话 id 并在连接到 socket.io 服务器时获取 socket.id?
先谢谢了 :)