Javascript 如何在用户和WebSocket之间建立一个连接?

Javascript 如何在用户和WebSocket之间建立一个连接?,javascript,json,node.js,websocket,socket.io,Javascript,Json,Node.js,Websocket,Socket.io,我在node/Express服务器上运行websocket 我需要将json字符串发送回websocket和客户端之间的第四个字符串 但是,如果用户打开多个浏览器选项卡,我希望websocket服务器知道这是已经连接的同一个用户 这是逻辑执行顺序 用户连接到WebSocket 用户将json字符串发送到WebSocket WebSocket对接收到的消息进行处理 WebSocket最终将新消息发送到用户打开的所有选项卡 新消息应仅返回给该用户,而不是其他用户 如何在用户和WebSocket之间建

我在node/Express服务器上运行websocket

我需要将
json
字符串发送回websocket和客户端之间的第四个字符串

但是,如果用户打开多个浏览器选项卡,我希望websocket服务器知道这是已经连接的同一个用户

这是逻辑执行顺序

  • 用户连接到WebSocket
  • 用户将json字符串发送到WebSocket
  • 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);
        }
    }
    
    var env=require('./config');
    var app=require('express')();
    var server=require('http')。服务器(应用程序);
    var io=require('socket.io')(服务器);
    var客户=[];
    侦听(env.socket.port、env.socket.host、函数(){
    var host=server.address().address;
    var port=server.address().port;
    log('Websocket在http://%s:%s、主机、端口上运行);
    });
    app.get('/',函数(req,res){
    res.send('欢迎!');
    });
    io.on('连接',函数(套接字){
    客户端[]=套接字;
    emit('chat',{hello:'world'});
    socket.on('chat',函数(msg){
    console.log('message:'+msg);
    sendAll(msg);
    });
    });
    函数sendAll(消息){
    对于(变量i=0;i
    如果您没有用户身份验证,那么您需要一些特定于浏览器的数据来关联后端的用户


    我不知道Cookie(还没有使用),但JavaScript级别的一种方法是在浏览器的本地存储中存储本地生成的随机ID(足够长,这样您就不必担心冲突),并在WebSocket级别将其作为初始消息的一部分进行传输。

    这使得。如何向属于1个用户的每个选项卡发送消息?使用会话客户端将由sessionid
    clients={session1:[socket]}键入
    clients['session1'].push(newtabracket)
    我有一个
    PHPSESSID
    cookie,我可以使用它。但是,我如何读取
    io.on('connection',function(socket){….
    中的cookie值呢?再次感谢您。但这并不能让我访问PHPSESSID cookie。