我在节点/ Express服务器上运行了websocket。
我需要在websocket和客户端之间发送json
字符串和第四。
但是,如果用户打开多个浏览器选项卡,我希望websocket服务器知道这是已连接的用户。
这是逻辑执行顺序
新邮件只应返回给该用户而不是其他用户。
如何在用户和WebSocket之间建立一个连接?
这是我的服务器设置
var env = require('./config');
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var clients = [];
server.listen(env.socket.port, env.socket.host, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Websocket running at http://%s:%s', host, port);
});
app.get('/', function (req, res) {
res.send('Welcome!');
});
io.on('connection', function (socket) {
clients[] = socket;
socket.emit('chat', { hello: 'world' });
socket.on('chat', function(msg){
console.log('message: ' + msg);
sendAll(msg);
});
});
function sendAll (message) {
for (var i=0; i< clients.length; i++) {
clients[i].send("Message For All: " + message);
}
}
答案 0 :(得分:0)
如果您没有为用户进行身份验证,那么您需要一些特定于浏览器的数据来关联后端上的用户。
我不了解cookies(没有使用过它们),但JavaScript级别的一种方法是存储本地生成的随机ID(足够的长度以便你不要在浏览器的本地存储中必须担心冲突,并将其作为WebSocket级别的初始消息的一部分进行传输。