socket.io如何在客户端上侦听从服务器发出的事件?

时间:2018-01-19 00:29:28

标签: javascript node.js socket.io

我的客户端有以下代码:

./hello2-module.chpl: line 1: module: command not found
./hello2-module.chpl: line 4: syntax error near unexpected token `('
./hello2-module.chpl: line 4: ` proc main()'

所以我想我理解上面的内容。发生单击事件时,运行回调函数。在回调函数中,让socket发出这个" chat"事件到服务器。与事件套接字一起发送,传递JSON数据。

现在在服务器端,我们有这个:

btn.addEventListener('click', function(){
    socket.emit('chat',{
        message: message.value,
        handle: handle.value
    });
});

我想我也理解这一点。将套接字绑定到此服务器。然后听连接事件。当调用该事件时,socket.io(会神奇地?)将套接字对象传递给我们的函数。然后我们听听我们所有的插座聊天。根据客户端的定义,从聊天中获取数据并将其发回给我们所有的套接字。

var io = socket(server);

io.on('connection', function(socket){    
    socket.on('chat', function(data){
        io.emit('chat', data);  
    });
});

再次在上面的例子中,我们让客户端在服务器端监听事件。

我的问题是,该活动如何得到通过"到客户端?这是某种本机Javascript功能吗?我想知道更多关于后端发生的事情。

1 个答案:

答案 0 :(得分:1)

事件通过websockets传递给服务器。它是从浏览器到服务器的tcp连接。连接是全双工的,这意味着服务器可以将实时数据发送到客户端,反之亦然。

在你的前端代码中,你应该有类似于

的东西
<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io();
</script>

此代码使用Web套接字向服务器请求tcp连接。一旦浏览器通过websockets连接到服务器,socket.io就可以通过连接向发送发送事件。

在连接事件中传递的套接字只是对前端连接时创建的套接字的引用。套接字获取唯一ID,通过此引用,您可以实时与Web浏览器客户端进行通信。

如果您想深入了解网络套接字,我建议您阅读

https://tools.ietf.org/html/rfc6455