0
我有一个使用phpwebsocket在本地主机上建立的WebSocket服务器。客户端是在几乎相同的时间发送2条消息发送到服务器(“喜服务器”)作为这样客户端没有收到所有使用websocket的消息
socket.send('hi server');
socket.send('hi server');
服务器接收两个消息和回复背面与该消息“SUP客户端”。
...
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的日志看起来是这样的:
客户端接收的代码信息:
socket.onmessage = function(msg)
{
log("Received: " + msg.data);
}
什么客户实际的div元素里面记录:
我不知道为什么客户端只处理一个消息时t他websocket服务器发送2.我应该有2'收到:sup客户'在该div标签。我在想也许它发送的消息对于JavaScript来说太快了。
发送每个消息的唯一标识符。即使是一个简单的全球递增值也可以。这会让你看到哪条消息失败。如果它始终如一,那么也许你的代码是越野车。如果它是随机的,那么在某处存在系统错误和/或竞争条件。 – 2010-12-18 19:21:57
谢谢马克,我用它来最终找到问题(下面的解决方案)。 phpwebsocket ... – mike 2010-12-19 13:01:09