【发布时间】:2015-12-10 22:38:05
【问题描述】:
我在节点/Express 服务器上运行 websocket。
我需要在 websocket 和客户端之间发送json 字符串和第四个字符串。
但是,如果用户打开多个浏览器的选项卡,我希望 websocket 服务器知道这是同一用户已连接。
这里是逻辑执行顺序
- 用户连接到 WebSocket。
- 用户向WebSocket发送json字符串。
- WebSocket 对收到的消息进行处理。
- 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);
}
}
【问题讨论】:
-
那是因为。如何向属于 1 个用户的每个选项卡发送消息?
-
使用会话客户端将由 sessionid
clients = {session1: [socket]};clients['session1'].push(newTabSocket)键入 -
我有一个可以使用的
PHPSESSIDcookie。但是,我如何读取io.on('connection', function(socket){....中的 cookie 值 -
再次感谢您。但这并不能让我访问 PHPSESSID cookie。
标签: javascript json node.js websocket socket.io