5

来自Socket.IO 网站的这个例子让我很困惑。发送和获取数据(确认)

客户

<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
4

3 回答 3

8

自己找的,如有错误请指正:

  • name(官方文档中的什么倒霉的名字!!!)实际上是客户端发送的数据
  • fn对应于客户端代码的第三个参数,当执行(从服务器)自动(?)将数据发送回客户端。惊人的!
于 2013-02-19T16:07:08.200 回答
1

确实; 如果您将“fn”重命名为“callback”,它会变得更加清晰,如下所示:Acknowledgment for socket.io custom event。该回调永远不会在服务器端执行;服务器只是将传递给回调的数据(在本例中为字符串“woot”)发送回客户端作为确认。然后使用服务器发送的数据在客户端上执行回调。

于 2014-11-19T20:38:48.037 回答
-1

将数据从客户端发送到服务器

socket.emit("Idofhtmltag",value);

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

socket.io("Idofhtmltag",function(msg){  }) ; 
于 2016-09-27T04:54:00.470 回答