2015-05-03 4 views
0

Я получаю сообщение об ошибке в node.js, когда я отправляю сообщение на сервер, что мой клиент использует forloop, я не знаю, почему я получаю тесное соединение, когда клиент использует 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' 

Спасибо заранее.

+0

Что такое 'forloop'? Это конкретная библиотека? И какое именно сообщение об ошибке вы получаете? – jfriend00

ответ

0

Сервер не может открыть соединение с клиентом. Итак, если ваш сотовый телефон закрыт по какой-либо причине, клиенту необходимо будет восстановить соединение с сервером.

Теперь, когда вы указали свой код клиента как последовательность последовательных аякс-калл, вызов ajax - это просто HTTP-запрос. Он выдаст http-запрос, дождитесь ответа и закроет соединение. http-соединения не регулярно открываются.

+0

Как восстановить соединение моего клиента? – jemz

+0

@jemz - Вы используете вызов ajax от клиента. См. Второй абзац, который я добавил к моему ответу. – jfriend00

+0

@jemz - Является ли ошибка сокета, которую вы получаете в сокете из вызова ajax или из сокета, который открывает ваш PHP-файл, чтобы прочитать некоторые данные? – jfriend00

Смежные вопросы