gpt4 book ai didi

php - WebSocket 可以连接到 Socket 服务器吗?

转载 作者:行者123 更新时间:2023-12-03 12:00:53 24 4
gpt4 key购买 nike

我想使用 PHP 和 nginx 实现一个简单的 WebSocket 服务器,我的印象如下:

  • 一旦 Websocket 通过了 RFC 6455 中描述的“协议(protocol)切换” ,它可以与任何标准(非“Web”)套接字服务器进行通信。
  • 根据nginx manual ,nginx可以进行前面提到的“协议(protocol)切换”。

  • 考虑到这一点,我尝试了以下由 JavaScript 客户端、nginx 配置和 PHP 服务器组成的简单实现(见下文)。
    结果:
  • PHP 服务器接收到包含 Connection: upgrade 的 WebSocket HTTP header , Sec-WebSocket-Key: ***和类似的领域。我认为这很好。
  • 但是,onopen事件永远不会在客户端上触发,这就是我卡住的地方。

  • 问题:
  • 我是否误解了一些细节,或者可能是它如何工作的整个概念?
  • 如何使我的代码示例工作?

  • Javascript 客户端:
    function socket() {

    var ws = new WebSocket("ws://socket/hello/");

    ws.onopen = function() {
    ws.send("Hello, World!");
    };

    ws.onmessage = function(event) {
    console.log(event.data);
    };

    }

    socket();
    nginx配置:
      server {
    location /hello/ {
    proxy_pass http://localhost:10000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    }
    server_name socket;
    root socket;
    }
    PHP 服务器:
    (完全按照 PHP manual 中示例 #1 中的描述实现,仅将 $address 更改为 127.0.0.1。)

    最佳答案

    它可以,但前提是套接字服务器实现了 websocket 协议(protocol)。如果您询问它是否可以用作通用 TCP 或 UDP 套接字,它不能。句号。

    关于php - WebSocket 可以连接到 Socket 服务器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18791541/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com