phpwebsocketを使用して、ローカルホストにWebSocketsサーバを設定しました。クライアントは、サーバが両方のメッセージを受信し、バックメッセージ「SUPクライアント」と返信されるようにクライアントはウェブソケットを使用しているすべてのメッセージを受信していません
socket.send('hi server');
socket.send('hi server');
ほぼ正確に同じ時間に、サーバー(「HIサーバ」)に2つのメッセージを送信しています。
メッセージ受信クライアントのためのコード:
socket.onmessage = function(msg)
{
log("Received: " + msg.data);
}
クライアントが実際にdiv要素の内側にログインしているもの:
を...
case "hi server": $this->send($user->socket,"sup client"); break;
...
function send($client,$msg){
echo "> ".$msg;
$msg = $this->wrap($msg);
socket_write($client,$msg,strlen($msg));
echo "! ".strlen($msg)."\n";
}
...
function wrap($msg=""){ return chr(0).$msg.chr(255); }
PHPのログには、次のようになります
私はなぜクライアントが1つのメッセージしか処理していないのかわかりません彼はwebsocketサーバー2を送信しました。私は2つの 'Received:supクライアント'そのdivタグにする必要があります。私は多分JavaScriptや何かのためにメッセージを少し速く送ることを考えている。
各メッセージに固有の識別子を送信します。単純なグローバルインクリメント値でさえも可能です。これにより、どのメッセージが失敗しているかを見ることができます。それが一貫して同じものなら、あなたのコードはバグかもしれません。それがランダムであれば、どこかにシステムバグや競合状態があります。 –
Marcありがとう、私はこの問題を最終的に見つけ出すためにこれを使用しました(下記の解決策)。 phpwebsocket ... – mike