通过php自带的socket连接workerman 聊天室框架

qq16631541

目前一个一个web页面,我想通过php socket握手失败
返回400

<?php
//error_reporting(E_ALL);
$service_port = 15221;
$address = '125.67.237.106';

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "创建失败:" . socket_strerror(socket_last_error()) . "<br />";
}

$result = socket_connect($socket, $address, $service_port);
if($result === false) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "<br />";
}

$in = '{"type":"login","client_name":"hekun","room_id":1}';

$out = "";
socket_write($socket, $in, strlen($in));

while ($out = socket_read($socket, 8192)) {
    echo $out;

}
socket_close($socket);
3824 1 0
1个回答

walkor

你连的应该是websocket端口,websocket协议有握手过程,并且需要按照websocket协议格式的数据才能被解析,看你的程序直接用socket发送的数据是不符合websocket协议,自然会返回错误。

gateway/worker模式中,可以新开一个非websocket的端口,比如Text协议的端口或者干脆tcp协议的端口,Text协议可以用telnet去调试。

多协议支持可以看下 手册
http://doc3.workerman.net/advanced/multi-protocols.html

这个估计对你也有用
http://doc3.workerman.net/advanced/push.html

  • 暂无评论
年代过于久远,无法发表回答
🔝