是否有人知道如何在使用socket.io时配置nagle算法(打开或关闭)? 这个选项是否随socket.io提供? 我假设默认行为配置为使用nagle算法(如果我错了请纠正我。)
理想情况下,我希望在不同的应用程序中根据需要使用socket.io来配置nagle的算法(开/关) - 无论我使用哪个Web / app服务器。
谢谢!
答案 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月)。