【问题标题】:What is the usage of "socket" in socket.io connection function in NodeJS?NodeJS中socket.io连接函数中的“socket”有什么用?
【发布时间】:2020-08-03 18:19:00
【问题描述】:

我正在学习如何在nodejs 服务器中使用socket.io。我看到下面列出的示例,我想知道连接功能中的socket 是什么?它是一个新的套接字对象吗? 'id' 来自哪里?我用谷歌搜索了它,但仍然不明白它的功能。谢谢

代码:

io.sockets.on('connection', function (socket) { //the socket in "function(socket)"
    socket.on('session_id', function (session_id) { socket.session_id = session_id; })
    setInterval(function() {
        socket.emit('date', {'date': new Date()});
    }, 1000);
}

【问题讨论】:

    标签: javascript node.js sockets socket.io


    【解决方案1】:

    让我们稍微修改一下您的示例以删除嵌套函数。

    function connectionHandler (socket) { 
        socket.on('session_id', function (session_id) { 
            socket.session_id = session_id; 
        })
        setInterval(function() {
            socket.emit('date', {'date': new Date()});
        }, 1000);
     }
    
     io.sockets.on('connection', connectionHandler)
    

    在您的示例中,io.sockets 是您的 socket.io 服务器。 io.sockets.on('connection', connectionHandler) 注册一个连接事件处理函数。

    然后,只要客户端(可能是在用户浏览器中运行的代码)连接,您的 connectionHandler 就会被当前连接的 socket 对象调用。

    socket.on('session_id') 设置一个事件处理程序来侦听来自具有emit('session_id','some message payload') 的客户端发送的消息。

    【讨论】:

    • 谢谢,您的回答肯定很清楚。很抱歉让你混淆了,原来的应该是socket.on('session_id', function ('session_id') { socket.session_id = session_id; }。我打错了。所以,“Socket”本身已经有自己的id了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多