繁体   English   中英

如何从错误地关闭套接字打开连接

[英]how to open socket connection from being close in error

当我将消息发送到客户端使用forloop的服务器时,在node.js中出现错误,我不知道为什么客户端使用forloop时会获得紧密连接。 那么有没有办法在错误事件上再次打开连接?

socket.on('error',function(err){
       // I want to open the connection again here.

   });

这就是我将消息发送到服务器的方式。

首先我用ajax

 msg.forEach(function (msgid) {
       $.ajax({
           type: 'get',
            data: 'msg=' + msgid,
            url: 'tomyclient',
            success:function(data){
              //response from server data

           }

       });

});

tomyclient.php

if(isset($_GET['msg'])) {

    $sendmessage = $_GET['msg'];
    $host = "localhost";
    $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;



}

这是我得到的错误

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

先感谢您。

服务器无法打开与客户端的连接。 因此,如果您的套接字由于某种原因而关闭,则客户端将必须重新建立与服务器的连接。

现在,您已经将客户端代码显示为一系列连续的ajax Calla,Ajax调用只是一个http请求。 它将发出http请求,等待响应,然后关闭连接。 http连接不是定期保持打开状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM