socket.io中的nagle算法

时间:2012-03-12 23:38:29

标签: socket.io nagle

是否有人知道如何在使用socket.io时配置nagle算法(打开或关闭)? 这个选项是否随socket.io提供? 我假设默认行为配置为使用nagle算法(如果我错了请纠正我。)

理想情况下,我希望在不同的应用程序中根据需要使用socket.io来配置nagle的算法(开/关) - 无论我使用哪个Web / app服务器。

谢谢!

2 个答案:

答案 0 :(得分:3)

根据Guillermo Rauch的说法,默认情况下,对于socket.io中的Web套接字,Nagle的算法是关闭的。我将提交一个请求以使其可配置(希望这将在未来版本中查看)。

感谢吉列尔莫。

答案 1 :(得分:1)

nagle算法可以切换

int socket_descriptor;  
BOOL bOptVal = TRUE;
int bOptLen = sizeof(BOOL);
// get a socket:
socket_descriptor = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
/* ... bind the socket, listen to it
    .
    .
*/
// set the socket to non-blocking mode:
ioctlsocket(socket_descriptor, FIONBIO, 1);

// disable nagle:
setsockopt(socket_descriptor, IPPROTO_TCP, TCP_NODELAY, (char*)&bOptVal, bOptLen);

编辑: 在 .NET 中,它是Socket.NoDelay属性。

socket.io 中,对于websockets已禁用nagle算法,并且禁用其他传输的nagle算法discussed(截至2012年4月)。