【问题标题】:Connecting by php to a python websocket server通过 php 连接到 python websocket 服务器
【发布时间】:2013-06-10 17:45:05
【问题描述】:

我有一个可以工作的 websocket 服务器(python + Tornado),它接受端口 8973 上的连接。我可以通过简单的 JavaScript / jquery 指令进行连接,例如:

ws = new WebSocket("ws://192.168.41.170:8973/rt");

但是我需要我的 php 脚本来连接到这个 websocket 服务器并发送一条消息。我尝试了所有最可用的解决方案,例如

https://github.com/lemmingzshadow/php-websocket/

$host = '192.168.41.170';  //where is the websocket server
$port = 8973;
$local = "http://192.168.41.2/";  //url where this script run
$data = 'hello world!';  //data to be send

$head = "GET / HTTP/1.1"."\r\n".
        "Upgrade: WebSocket"."\r\n".
        "Connection: Upgrade"."\r\n".
        "Origin: $local"."\r\n".
        "Host: $host"."\r\n".
        "Content-Length: ".strlen($data)."\r\n"."\r\n";
//WebSocket handshake
$sock = fsockopen($host, $port, $errno, $errstr, 2);
fwrite($sock, $head ) or die('error:'.$errno.':'.$errstr);
$headers = fread($sock, 2000);
fwrite($sock, "\x00$data\xff" ) or die('error:'.$errno.':'.$errstr);
$wsdata = fread($sock, 2000);  //receives the data included in the websocket     package "\x00DATA\xff"
fclose($sock);

但这一切都行不通。有人有工作代码sn-p吗?我不需要 php-websocket 服务器!谢谢

【问题讨论】:

    标签: php python websocket tornado


    【解决方案1】:

    我认为您的问题在于如何打包数据。在不知道您尝试使用哪种协议的情况下,我无法告诉您如何打包它!但是,this question 的一个答案中有一个工作代码 sn-p。

    【讨论】:

    • 很遗憾,这些功能不起作用。我用wireshark捕获服务器上的数据包;所有可用的脚本都只是发出一个 TCP 请求,而不是像 JavaScript 中的 WebSocket 类那样的 HTTP 请求。我尝试使用 curl 自己构建一个脚本,它连接成功,但我无法通过 curl_close 关闭连接。
    猜你喜欢
    • 2021-10-22
    • 2014-07-05
    • 2015-10-17
    • 2016-11-19
    • 2011-05-21
    • 2020-10-22
    • 2015-11-19
    • 2019-11-15
    • 1970-01-01
    相关资源
    最近更新 更多