javascript - Node.js 错误 ECONNRESET

标签 javascript php node.js sockets

我的客户端 (PHP) 反复向 Node.js net.Server 发送消息,并收到意外错误。

服务器部分:

socket.on('error',function(err){
    logger.emit('error',err);
});

[Error: write ECONNABORTED] code: 'ECONNABORTED', errno: 'ECONNABORTED', syscall: 'write'

[Error: read ECONNRESET] code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' 

如果我一条一条地发送消息,我不会收到错误。

编辑:发布client.php:

if(isset($_GET['msg'])) {
    $sendmessage = $_GET['msg'];
    $host = "xxx.xxx.xx.xx";//server ip 
    $port = 3030;

    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");

    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1);

    $result = socket_connect($socket, $host, $port) or die("Couldn't connect to server: [$errorcode] $errormsg");

    socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 60, "usec" => 0));

    socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");

    $serverresponse = socket_read($socket, 1024,PHP_NORMAL_READ) or die("Could not read server response: [$errorcode] $errormsg"); 

    echo $serverresponse;
}

最佳答案

您收到的错误是由于 PHP 客户端关闭了 TCP 连接而引发的,所以我猜您的客户端出现了问题。

编辑:

用它构建一个普通的 TCP 套接字客户端并不是一个非常简单的任务。如果幸运的话,您只是缺少 socket_close($sock); ( php.net Sockets Examples )。

我真的建议只使用 HTTP 协议(protocol):

这将使一切变得更加简单,并且几乎开箱即用。

关于javascript - Node.js 错误 ECONNRESET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30015610/

相关文章:

php - Laravel 4.1 Facade 非静态方法不应被静态调用

javascript - 使用 mocha 和 super 测试进行 NodeJS HTTPS API 测试 -"CERT_HAS_EXPIRED"

node.js - Node/Express 服务镜像(如果存在);缓存问题

javascript - Highcharts,构建 "Text"图

javascript - 是否有办法检测用户何时进入主屏幕并返回浏览器?

javascript - "Uncaught SyntaxError: missing ) after argument list"

javascript - jQuery,未定义的函数,如果在不同的函数中使用

php - 使用 PHP 的 PDO 将 "number of views"保存到 MySQL 中记录的表行?

PHP fwrite 新行

javascript - 在 Node.js 脚本中运行两个脚本