【发布时间】:2019-03-12 04:28:40
【问题描述】:
当我尝试从连接到 MySQL 数据库的 localhost 运行聊天应用程序时,该数据库已通过 WebSocket 使用 PHP 进行编码,它成功了。
当我尝试跑步时 从 PuTTY 终端登录到 SSH 凭据,它显示为 Server Started with the port# 8383
somelabz@bh-ht-3 [~/public_html/chatroom-php-mysql/bin]# php server.php
Server Started.somelabz@bh-ht-3 [~/public_html/chatroom-php-mysql/bin]# php server.php
Server Started.
服务器以除8080以外的任何端口#启动。所以我决定用8383打开端口,结果它已经启动成功
使用端口 8080,error_log 生成为
[07-Oct-2018 06:11:02 Etc/GMT] PHP Fatal error: Uncaught RuntimeException: Failed to listen on "tcp://0.0.0.0:8080": Address already in use in /home/somelabz/public_html/chatroom-php-mysql/vendor/react/socket/src/TcpServer.php:164
Stack trace:
#0 /home/somelabz/public_html/chatroom-php-mysql/vendor/react/socket/src/Server.php(36): React\Socket\TcpServer->__construct('tcp://0.0.0.0:8...', Object(React\EventLoop\StreamSelectLoop), Array)
#1 /home/somelabz/public_html/chatroom-php-mysql/vendor/cboden/ratchet/src/Ratchet/Server/IoServer.php(59): React\Socket\Server->__construct('0.0.0.0:8080', Object(React\EventLoop\StreamSelectLoop))
#2 /home/somelabz/public_html/chatroom-php-mysql/bin/server.php(15): Ratchet\Server\IoServer::factory(Object(Ratchet\Http\HttpServer), 8080)
#3 {main}
thrown in /home/somelabz/public_html/chatroom-php-mysql/vendor/react/socket/src/TcpServer.php on line 164
server.php
<?php
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;
require dirname(__DIR__) . '/vendor/autoload.php';
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8383
);
$server->run();
chatroom.php
// For other computers to connect, you will probably need to change this to your LAN IP or external IP,
// alternatively use: gethostbyaddr(gethostbyname($_SERVER['SERVER_NAME']))
// $Server->wsStartServer($_SERVER['SERVER_ADDR'], 9300);
var conn = new WebSocket('ws://localhost:8383');
<script type="text/javascript">
$(document).ready(function(){
var conn = new WebSocket('ws://localhost:8383');
conn.onopen = function(e) {
console.log("Connection established!");
};
...
</script>
从浏览器检查控制台信息当我尝试切换/更改域名以及端口# 使用文件chatroom.php 和server.php 中的排列和组合时,我得到了以下日志
var conn = new WebSocket('ws://localhost:8383');
var conn = 新 WebSocket('ws://192.197.161.61/~somelabz:8383');
var conn = 新 WebSocket('ws://somelabz.ml/chatroom-php-mysql:8383');
var conn = 新 WebSocket('ws://somelabz.ml:8383/');
var conn = 新 WebSocket('ws://192.197.161.61:8383/');
我以前遇到如下错误:
chatroom.php:73 WebSocket 连接到 'ws://somelabz.ml:8383/' 失败:连接建立错误: 网络::ERR_CONNECTION_TIMED_OUT
chatroom.php:73 WebSocket 连接到 'ws://192.197.161.61/~somelabz:8383' 失败:WebSocket 期间出错 握手:意外响应代码:404
到 'ws://somelabz.ml/chatroom-php-mysql:8383' 的 WebSocket 连接 失败:WebSocket 握手期间出错:意外的响应代码: 404
到 'ws://somelabz.ml:8383/' 的 WebSocket 连接失败:错误 连接建立:net::ERR_CONNECTION_TIMED_OUT
到“ws://192.197.161.61:8383/”的 WebSocket 连接失败:错误 连接建立:net::ERR_CONNECTION_TIMED_OUT
从
WebSocket 连接它时,我想如何解决/克服它,尤其是从具有http://somelabz.ml/chatroom-php-mysql 等域名的托管服务器
var conn = new WebSocket('ws://localhost:8383');
这是执行添加src文件夹$composer require cboden/ratchet后生成的composer文件
composer.json(在服务器上)
{
"autoload": {
"psr-4": {
"MyApp\\": "src"
}
},
"require": {
"cboden/ratchet": "^0.4.1"
}
}
composer.json(在本地主机上)
{
"autoload": {
"psr-4": {
"MyApp\\": "src"
}
},
"require": {
"cboden/ratchet": "^0.4.3"
}
}
【问题讨论】:
标签: php sockets websocket ratchet phpwebsocket