【发布时间】:2019-01-13 02:49:45
【问题描述】:
我已经创建了一个 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 Received: '.$input;
socket_write($client, $output, strlen($output));
socket_close($client);
}
socket_close($socket);
我已经使用以下命令在终端中执行了包含上述代码的文件
$ php server.php
现在我想使用 JavaScript 在前端获得响应。我使用了以下 JS sn-p 但无法正常工作。
var ws = new WebSocket("ws://localhost:5001/echo");
ws.onopen = function() {
ws.send("Message to send");
alert("Message is sent...");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
alert("Message is received...");
};
ws.onclose = function() {
alert("Connection is closed...");
};
收到以下错误:
到 'ws://localhost:5001/echo' 的 WebSocket 连接失败:WebSocket 握手期间出错:net::ERR_INVALID_HTTP_RESPONSE
【问题讨论】:
-
你已经创建了一个 TCP 套接字,而不是一个 websocket。不止于此。
-
@BenFortune - 如何创建 websocket (ws) 而不是 tcp 套接字?还是 tcp socket 能满足我的要求?
-
@BenFortune - 我可以做些什么来让 JavaScript 与 TCP 通信,而不是使用 3rd 方库创建 websocket。
-
没什么。浏览器通常不支持使用 JS 的原始 TCP 连接。你需要一个抽象,这就是 websocket 存在的原因。
标签: javascript php websocket localhost listener