当前位置: 首页 > 知识库问答 >
问题:

PHP websocket服务器和JavaScript连接

太叔岳
2023-03-14

我创建了一个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
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..."); 
};

共有1个答案

裘禄
2023-03-14

编写PHP websocket服务器需要与通过ws://连接到您的客户机执行某种握手。此外,您还需要对进出的消息进行解码和编码。真正的乐趣始于客户端通过wss://与您联系,然后您必须在PHP服务器中处理证书和密钥,并使用stream-io而不是socket-io等等。您可以看看我对所有这些的实现,并将其作为另一个起点。

https://github.com/napengam/phpwebsocketserver

 类似资料:
  • 从名字上也可看出,这是一个 WebSocket 的 PHP 实现。 示例客户端代码: var host = "ws://localhost:12345/websocket/server.php"; try{   socket = new WebSocket(host);   log('WebSocket - status '+socket.readyState);   socket.onopen

  • 启动mysql服务: sudo service mysql start 停止mysql服务: sudo service mysql stop 要连接到服务器,我们通常需要提供MySQL的用户名来触发mysql,很可能,还需要密码。如果你的服务器运行在一个其他的机器上,你还需要指定主机名。联系管理员来找到连接参数(例如主机名,用户名和密码),当你知道了正确的参数后,你可以像下面那样连接: she

  • 我正在尝试连接两个docker容器,一个是posgresql,另一个是python flask应用程序。两者都链接正确,python应用程序中的所有连接变量都直接取自postgres容器中通过链接公开的连接变量,并且与检查postgresql容器时发现的连接变量相同。当我将psql与连接字符串中的精确参数一起使用时,即: 成功连接到postgres容器中的数据库,因此我知道postgres正在通过

  • 使用RxJS和Angular 2处理服务器重新连接的最佳方法是什么? 控制台中的结果: 如果我把这行替换掉.. 与 ...ServiceOnline仅在http服务返回成功响应且当前联机状态为false(断开连接)时发出另一个值: 所以TakeTaile应该有效。我在这里误解/遗漏了什么? 我是RxJS的新手--任何关于改进这段代码中实现的其他指针也将非常感谢...

  • null null Tomcat服务器正在运行servlet,为mySQL数据库执行一些业务逻辑和hibernate框架。 现在我有点糊涂了。两台服务器都能接收HTTP请求吗?就像servlet从网页接收https请求和我的apache服务器一样? 并且两者都可以连接到数据库--使用php的apache服务器,正如我提到的,同时使用servlet的tomcat?

  • 我使用Sabre DAV在PHP中实现了一个webdav目录,用于我的网站(Application Server Webinterface)。 对于这个网站,我现在使用C#编写了一个TCP套接字,它运行在另一个服务器上(实际上它在同一个数据中心,但从理论上讲,它在另一个半球上)。 我想连接我的网络Dav到我的套接字的FTP服务器,这意味着文件监听,下载,上传。用户只能连接到一个服务。想象一下,我的