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