我的客户端只能发出一次“强制新连接”将响应复制回我的客户端。这是我的代码,所以你可以查一查。
server.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');
});
});
client.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);
});
答案 0 :(得分: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)
}