2016-05-14 92 views
1

我已经安装了下面的git的消息:Flynsarmy/PHPWebSocket聊天我的服务器上,并成功建立了聊天,它工作正常,并且用户可以互相沟通好。PHP的WebSocket - 广播(发送)从服务器

最近24小时我试图从另一个PHP文件发送系统消息:

$host = '89.163.140.48'; //where is the websocket server 
$port = 9300; 
$local = "http://www.indiamea.com"; //url where this script run 
$data = '{"message":"TEST - MESSAGE - TEST"}'; //data to be send 

$head = "GET /?token=$jwt HTTP/1.1"."\r\n". 
      "Upgrade: WebSocket"."\r\n". 
      "Connection: Upgrade"."\r\n". 
      "Origin: $local"."\r\n". 
      "Host: $host:$port"."\r\n". 
      "Sec-WebSocket-Key: Bom4DUh5Brl8xmvUYbDQzA=="."\r\n". 
      "Sec-WebSocket-Version: 13"."\r\n". 
      "Content-Length: ".strlen($data)."\r\n"."\r\n"; 

//WebSocket handshake 
$sock = fsockopen($host, $port, $errno, $errstr, 15); 
fwrite($sock, $head) or die('error:'.$errno.':'.$errstr); 
$headers = fread($sock, 2000); 
fwrite($sock, $data) or die('error:'.$errno.':'.$errstr); 
$wsdata = fread($sock, 2000); //receives the data included in the websocket package "\x00DATA\xff" 
fclose($sock); 

WebSocket的是接受该请求(打开事件),但该消息事件不是server.php脚本,内烧制该意味着消息不会发送给用户。

我试过谷歌搜索,但我找不到任何解决方案。

我真的希望有人能帮助我。

如果需要server.php代码,你可以在这里接取它:https://github.com/Flynsarmy/PHPWebSocket-Chat/blob/master/server.php

+0

也许有人知道一个替代方案我如何模拟发送消息到websocket,所以我可以发送系统消息在我的聊天? –

回答

0

你不能做你想直接做什么。

虽然你可以间接做到 - 我已经在商业上做到了这一点,我们的解决方案是数据库轮询。

所以,你要做的就是在新建的WebSocket服务器循环启动时,它每隔几秒钟(如10秒)运行一次,以检查数据库表中标记为未发送的邮件。如果它找到一个,那么它会发送它并将其标记为已发送。

你的PHP后台可以写这个表,当然,这样的数据库作为您的WebSocket客户端/服务器和你的PHP后端之间的中介。

但是,如果你的WebSocket服务器已经在运行一个while循环,那么这将没有一个单独的线程是可能的。