什么是Socket.IO发送和获取数据(确认)?

时间:2013-02-19 07:33:12

标签: sockets websocket socket.io

来自Socket.IO website的这个例子令我感到困惑。 发送和获取数据(确认)

客户端

<script>
    socket.on('connect', function () {
        socket.emit('ferret', 'tobi', function (data) {
             console.log(data); // data will be 'woot'
        });
    });
</script>

服务器

io.sockets.on('connection', function (socket) {
    socket.on('ferret', function (name, fn) {
        fn('woot');
    });
});

我实际上正在复制这个例子。我无法理解的是:

  • Q1 :这首先是如何运作的。服务器(执行fn自动时会将结果发送给客户端吗? Socket.IO是否将fn绑定到emit的客户端第三个参数?
  • Q2 服务器匿名name中的(未使用的)function (name, fn)参数是什么?记录它显示它是undefined,为什么?

3 个答案:

答案 0 :(得分:8)

我自己发现,如果我错了,请纠正我:

  • name(官方文档中有什么不好的名字!!!)实际上是客户发送的数据
  • fn对应于客户端代码的第3个参数,当执行时(从服务器)自动(?)将数据发送回客户端。太神奇了!

答案 1 :(得分:1)

实际上;如果你重命名&#34; fn&#34;它会更加清晰。回到&#34;回调&#34;,如下所示:Acknowledgment for socket.io custom event。该回调永远不会在服务器端执行;服务器只是将传递给回调的数据(在这种情况下,字符串&#34; woot&#34;)作为确认发送回客户端。然后使用服务器发送的数据在客户端上执行回调。

答案 2 :(得分:-1)

从客户端向服务器发送数据

socket.emit("Idofhtmltag",value);

要从服务器接收数据,请在客户端html上添加此

socket.io("Idofhtmltag",function(msg){  }) ;