0

我的客户端只能发出一次,并且“强制新连接”将响应复制回我的客户端。这是我的代码,所以你可以查一下。

服务器.js

var app = require('http').createServer()
, io = require('socket.io').listen(app);

app.listen(5000);


io.sockets.on('connection', function(socket) {

   socket.on('sendSheet', function(data) {
      io.sockets.emit('displayData', data);

   });

   socket.on('disconnect', function() {
      io.sockets.emit('user disconnected');
   });
});

客户端.js

var socket = io.connect('http://localhost:5000', {'force new connection': true});
socket.on('dispatchConnect', function (data) {
    socket.emit('sendSheet', mergedForm);
});

socket.on('displayData', function (data) {
    console.log(data);
});
4

1 回答 1

0

阅读 nodejs 中的异步函数并尝试理解“节点事件循环”。

你的代码是阻塞的,因为你的函数是同步的。

由于事件循环在单个线程中运行,因此它仅在回调完成时处理下一个事件。

永远不应该在回调中使用阻塞函数,因为您正在阻塞事件循环并阻止其他回调(可能属于其他客户端连接)被服务。

这是一个异步示例:

var myAsyncFunction = function(someArg, callback) { // simulate some I/O was done
    setTimeout(function() {  // 1 second later, we are done with the I/O, call the callback
        callback();
    }, 1000)
}
于 2013-05-23T18:44:22.310 回答