为什么socket.setNoDelay()抛出错误?

时间:2015-08-24 21:10:51

标签: node.js socket.io

我有一个nodejs服务器使用socketio进行实时通信。

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

function init() {
    app.listen(process.env.PORT || 8888);
};

io.sockets.on('connection', function (socket) {
    socket.setNoDelay(true);
    onSocketConnection(socket);
});

问题是,每次我调用socket.setNoDelay(true);它正在回击:

E:[path]\server.js:58
  socket.setNoDelay(true);
         ^
TypeError: undefined is not a function
    at Namespace.<anonymous> (E:\[path]\server.js:58:12)   
    at Namespace.emit (events.js:107:17)
    at Namespace.emit (E:\path]\node_modules\socket.io\lib\namespace.js:205:10)   
    at E:\[path]\node_modules\socket.io\lib\namespace.js:172:14
    at process._tickCallback (node.js:355:11)

我似乎无法找到有关为何发生这种情况的任何文件。其他人都看到了吗?

规格:

> Windows Environment  
> node version: 0.12.4 
> socket.io version: 1.3.6

1 个答案:

答案 0 :(得分:4)

由于socket不是net.Socket,因此它是socket.io Socket。您会注意到socket.io setNoDelay上没有Socket方法。

socket.io websocket sever automatically disables Nagle on the underlying TCP socket