2014-02-01 2 views
2

Вчера я написал короткий сервер WebSocket в PHP. Когда клиент подключается к серверу, сервер считывает клиентское рукопожатие и отправляет квитанцию ​​сервера обратно с помощью соответствующего ключа. onopen() клиента увольняется, и сервер и клиент отображаются для подключения.Соединение WebSocket установлено, но не может получать сообщения

Моя проблема: сервер не может получать клиентские сообщения, и клиент не может получать сообщения сервера. onmessage() не запускался один раз, а socket_select() никогда не возвращает клиента, который отправил сообщение на стороне сервера.

function connect() { 
    try { 
     var webSocketURL = "ws://" + serverAddress + ":" + serverPort; 
     socket = new WebSocket(webSocketURL); 

     socket.onopen = function() { 
      log("Connected! (" + this.readyState + ")"); 
     } 

     socket.onclose = function() { 
      log("Closed! (" + this.readyState + ")"); 
      socket.close(); 
     } 

     socket.onerror = function(error) { 
      log("Error: " + error.data); 
      socket.close(); 
     } 

     socket.onmessage = function(message) { 
      log("Message from server: " + message.data); 
     } 
    } 

    catch (e) { 
     alert("Error: " + e); 
    } 
} 

Серверный код немного больше, но вы можете найти его here.

Может ли кто-нибудь сказать мне, что там не так? Правильно ли рукопожатие? Выход

Клиент:

Connected! (1) сообщение на сервер: 0USERchannel

Server output.

Помощь очень ценю, спасибо.

+0

Вы поняли это в конце? Такая же проблема здесь – Nick

ответ

1

На стороне клиента закрепите переменную socket глобальной.

+0

var socket; находится в верхней части моего сценария, я думаю, что это доступно везде. –

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