PHP Workerman - 客户端websocket连接问题

时间:2018-02-09 10:01:01

标签: javascript php websocket

我正试图在Workerman lib for PHP和javascript客户端之间建立非常简单的连接。我无法在javascript客户端上正确设置websocket的URL。

Workerman lib

实际上我正在使用Cloud9进行测试,然后我想将此示例移至共享主机。

这是我的文件夹结构:

enter image description here

这是我的php示例index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Workerman Sockets Test</title>
</head>
<body>
    <h3>Hello</h3>
    <script type="text/javascript">
        // How to set url for websocket in this case???
        var socket = new WebSocket("wss://project-user.c9users.io:2346/workerman/test/");

        socket.onopen = function() {
          alert("Connection established.");
        };

        socket.onclose = function(event) {
          if (event.wasClean) {
            alert('The connection is closed.');
          } else {
            alert('Connection failure'); // for example, the server process is "killed"
          }
          alert('Code: ' + event.code + ' reason: ' + event.reason);
        };

        socket.onmessage = function(event) {
          alert("Received data " + event.data);
        };

        socket.onerror = function(error) {
          alert("Error" + error.message);
        };
    </script>
</body>
</html>

这是我的客户样本$ php start.php

Workerman[start.php] start in DEBUG mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.5.4          PHP version:5.5.9-1ubuntu4.22
------------------------ WORKERS -------------------------------
user          worker        listen                    processes status
ubuntu        none          websocket://0.0.0.0:2346   4         [OK] 
----------------------------------------------------------------
Press Ctrl+C to quit. Start success.

然后我使用此命令Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT运行我的脚本:

[ec2-user@ip-123-45-67 ~]$ jupyter notebook
-bash: jupyter: command not found

然后我正在运行apache服务器,当我打开页面时出现超时错误:[ec2-user@ip-123-45-67 ~]$ which jupyter /usr/bin/which: no jupyter in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin) [ec2-user@ip-123-45-67 ~]$ which python /usr/bin/python

那么,有人可以建议如何在客户端上设置websocket地址,以便与Workerman lib一起使用吗?

1 个答案:

答案 0 :(得分:1)

我的第一个假设是Cloud9不会打开此端口。

阅读他们的文档确认: https://docs.c9.io/docs/run-an-application

  

托管Cloud9工作区上的可用端口如果您正在开发   服务器应用程序,请注意您需要收听0.0.0.0   ($ IP)和8080($ PORT)。通过聆听此端口,您的应用就可以了   可在http://-.c9users.io查看。

     

您还可以绑定到可以访问的端口8081和8082   http://-.c9users.io:8081和   分别为http://-.c9users.io:8082。

     

请注意,8080,8081和8082是唯一可用的端口   托管的Cloud9工作区。