目前一个一个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);
你连的应该是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