代码如下:
$socket_client = stream_socket_client('192.168.31.103:7272', $errno, $errstr);
stream_set_blocking($socket_client, 0);
if (!$socket_client) {
die("$errstr ($errno)");
} else {
$package_data = array('a'=> 'b',);
$package = json_encode($package_data);
$res = fwrite($socket_client, $package);
usleep(100000);
debug(fread($socket_client, 1000000));
fclose($socket_client);
}
运行结果是:HTTP/1.1 400 Bad Request
请问:和传的是json有关么,我换了‘aef’就没这个问题,但是不知道如何解决,因为需要json格式。
无论发的是json还是字符串,服务器都会显示client:192.168.31.103:62155 gateway:127.0.0.1:7272 client_id:7f00000108fc00000025 onClose:'' 代表将client踢掉了。。服务器是你们的聊天服务器,不知道是什么原因,可能因为内容格式的问题么。求大神指点~~~
你的服务端7272端口应该是websocket协议,发送的数据应该以websocket协议格式发送,不是随便发个数据服务端就能识别。
这个问题就像你用stream_socket_client发起一个socket连接数据库的3306端口,然后随便发个数据,mysql同样不能识别一样。服务端无法识别你传输的数据,自然认为是非法数据,然后断开连接。
你要以对方能读懂的数据格式(协议)发送才行。
为什么要自己建立socket连websocket端口?websocket协议比较复杂,不建议手写代码模拟websocket协议去传输数据。
我想通过模拟websocket来测试并发量,不知道是否还有别的途径。
百度 websocket压测