5

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

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

谢谢!

4

2 回答 2

3

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

谢谢吉列尔莫。

于 2012-03-13T17:43:20.447 回答
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中,nagle 算法已经为 websockets 禁用,并且正在讨论为其他传输禁用它(截至 2012 年 4 月)。

于 2012-07-16T11:20:28.590 回答