我正试图在Workerman lib for PHP和javascript客户端之间建立非常简单的连接。我无法在javascript客户端上正确设置websocket的URL。
实际上我正在使用Cloud9进行测试,然后我想将此示例移至共享主机。
这是我的文件夹结构:
这是我的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一起使用吗?
答案 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工作区。