【问题标题】:node.js http server response socket write event?node.js http服务器响应套接字写入事件?
【发布时间】:2016-03-14 01:02:34
【问题描述】:

有没有办法控制 tcp 套接字写入的每一步,以了解大型图像数据传输的服务器端进度?

在最坏的情况下,如何更改主节点 bin 文件夹以添加此事件?

最后,谁能解释一下为什么 node.js http tcp 套接字的最大长度是 1460?

【问题讨论】:

  • 目前这个问题有点乱。您有 3 个问题,其中至少一个似乎是基于误解(最后一个)。也许你可以给我们看一些代码。

标签: node.js sockets http response


【解决方案1】:

来自documentation

socket.write(data, [encoding], [callback])

在套接字上发送数据。 第二个参数指定a的情况下的编码 字符串——默认为 UTF8 编码。

如果整个数据已成功刷新到内核,则返回 true 缓冲。如果全部或部分数据在用户中排队,则返回 false 记忆。 'drain' 将在缓冲区再次空闲时发出。

可选的回调参数将在数据被执行时执行 终于写出来了——这可能不会马上写出来。

事件:'drain'

当写缓冲区变空时发出。可 用于限制上传。

参见:socket.write() 的返回值

因此,您可以指定在数据刷新后调用的回调,或者您可以在套接字上注册一个“drain”事件处理程序。这实际上并没有告诉您另一端的进度,但是正确实现的服务器会在其队列已满时发送适当的通知,这将触发 Node.js 端的事件。

【讨论】:

  • 我想要每个 tcp 包发送的报告事件。正如我在wireshark中看到的那样。我将使用 socket.IO 向客户端报告进度传输
  • 当您在 Node.js 中使用套接字时,您的工作水平比wireshark 高很多。一方面,有内核缓冲 - 所以你不一定会为每次写入套接字发送一个网络数据包。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 2013-05-29
  • 2014-06-20
相关资源
最近更新 更多