PHP websocket server and JavaScript connection

25 浏览
0 Comments

PHP websocket server and JavaScript connection

我已经创建了一个如下所示的PHP WebSocket服务器脚本。

$socket = socket_create(AF_INET, SOCK_STREAM, 0);
$result = socket_bind($socket, '127.0.0.1', 5001);
while (true) {
    $result = socket_listen($socket);
    $client =  socket_accept($socket);
    $input = socket_read($client, 1024);
    $output = '收到输入:'.$input;
    socket_write($client, $output, strlen($output));
    socket_close($client);
}
socket_close($socket);

我使用以下命令在终端中执行了包含上述代码的文件。

$ php server.php

现在我想使用JavaScript在前端获取响应。我使用了以下JS片段但不起作用。

var ws = new WebSocket("ws://localhost:5001/echo");
ws.onopen = function() {
ws.send("要发送的消息");
    alert("消息已发送...");
};
ws.onmessage = function (evt) { 
    var received_msg = evt.data;
    alert("收到消息...");
};
ws.onclose = function() { 
    alert("连接已关闭..."); 
};

收到以下错误:

WebSocket连接到'ws://localhost:5001/echo'失败:WebSocket握手期间出错:net::ERR_INVALID_HTTP_RESPONSE

0
0 Comments

PHP websocket服务器和JavaScript连接的问题出现的原因是需要与通过ws://协议连接到您的客户端执行特定的握手。此外,您还需要解码和编码进出的消息。当客户端通过wss://联系您时,真正有趣的部分开始了,然后您必须在PHP服务器中处理证书和密钥,并使用stream-io而不是socket-io等等。您可以查看我对所有这些的实现,并将其用作另一个起点。

解决方法是使用napengam的PHP WebSocket服务器实现。您可以在以下链接中找到该实现:https://github.com/napengam/phpWebSocketServer

0