聊天服务器测试的问题

chicbo

代码如下:

$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踢掉了。。服务器是你们的聊天服务器,不知道是什么原因,可能因为内容格式的问题么。求大神指点~~~

3350 1 0
1个回答

walkor

你的服务端7272端口应该是websocket协议,发送的数据应该以websocket协议格式发送,不是随便发个数据服务端就能识别。

这个问题就像你用stream_socket_client发起一个socket连接数据库的3306端口,然后随便发个数据,mysql同样不能识别一样。服务端无法识别你传输的数据,自然认为是非法数据,然后断开连接。

你要以对方能读懂的数据格式(协议)发送才行。

为什么要自己建立socket连websocket端口?websocket协议比较复杂,不建议手写代码模拟websocket协议去传输数据。

  • chicbo 2016-01-12

    我想通过模拟websocket来测试并发量,不知道是否还有别的途径。

  • walkor 2016-01-12

    百度 websocket压测

年代过于久远,无法发表回答
🔝