gpt4 book ai didi

php - 如何防止 Node.js 将套接字消息拆分为更小的 block

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:57 25 4
gpt4 key购买 nike

我有一个聊天程序,它通过 TCP 套接字将 JSON 数据从 Apache/PHP 推送到 Node.js:

// Node.js (Javascript)
phpListener = net.createServer(function(stream)
{
stream.setEncoding("utf8");
stream.on("data", function(txt)
{
var json = JSON.parse(txt);

// do stuff with json
}
}
phpListener.listen("8887", 'localhost');

// Apache (PHP)
$sock = stream_socket_client("tcp://localhost:8887");
$written = fwrite($sock, $json_string);
fclose($sock);

问题是,如果 JSON 字符串足够大(超过 8k 左右),输出消息会被分成多个 block ,并且 JSON 解析器会失败。 PHP 返回 $written 值作为字符串的正确长度,但数据事件处理程序触发两次或更多次。

我应该将函数附加到不同的事件,还是有一种方法可以跨事件触发缓存文本,以一种不会在重负载下屈服于竞争条件的方式?或者我没有想到的其他解决方案?

谢谢!

最佳答案

您应该尝试使用缓冲区来缓存数据,因为 Node.js 倾向于拆分数据以提高性能。

http://nodejs.org/api.html#buffers-2

您可以缓冲所有请求,然后使用存储在其中的数据调用该函数。

关于php - 如何防止 Node.js 将套接字消息拆分为更小的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3437012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com