PHP 的socket连接 workerman 的websocket 问题!

0
function SendSocketMsg(){
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket,'127.0.0.1', 2346);
/*
if ($result == false)
{
echo 'connect error!';
return false;
}
*/

$msg = '@hello socket11111';
if (socket_write($socket, $msg, strlen($msg)) === false)
{
echo "socket_write() failed: reason: " . socket_strerror(socket_last_error()) ."/n";
return false;
}

//$recv_data = socket_read($socket,1024);
socket_close ($socket);
//return $recv_data;
}
SendSocketMsg();

workerman中 onConnect 可以触发,但没有收到任何数据,PHP代码也没有错误。
使用HTML5 连接数据正常。

已邀请:

walkor

赞同来自: kaifengjk jc91715

websocket服务需要用websocket协议连接,才能通讯。
就像http协议,你要用浏览器通过http协议取访问,服务端才能正确收到。
msyql数据库服务,你要用mysql协议才能正确访问。


直接socket连,发的数据不符合websocket通讯协议,服务端自然无法识别你发的是什么,所以收不到。


如果直接socket连,可以直接基于tcp通讯,就不要用websocket协议,
new XXX('websocket://0.0.0.0:2346');
改成
new XXX('tcp://0.0.0.0:2346');
就可以通讯了,但是会有粘包问题。
协议相关请参考workerman手册,或者网上看一些文章

要回复问题请先登录注册