Ubuntu上的PHP Websocket
所以我已经在这上面搜索了很长一段时间,尝试了很多东西,但就是不知道如何让它工作。我在本地机器上使用XAMPP和angular(v5)前端创建了一个PHP WebSocket服务器(ratchet),工作时没有任何问题 然后我尝试在DigitalOcean实例上部署这两个应用程序,其中一个LAMP堆栈正在运行,因为该应用程序不仅仅是WebSocket聊天,其余的(RESTful API)工作正常,但是当JavaScript尝试连接到WS时,我得到了Ubuntu上的PHP Websocket,php,apache,websocket,mod-proxy,ratchet,Php,Apache,Websocket,Mod Proxy,Ratchet,所以我已经在这上面搜索了很长一段时间,尝试了很多东西,但就是不知道如何让它工作。我在本地机器上使用XAMPP和angular(v5)前端创建了一个PHP WebSocket服务器(ratchet),工作时没有任何问题 然后我尝试在DigitalOcean实例上部署这两个应用程序,其中一个LAMP堆栈正在运行,因为该应用程序不仅仅是WebSocket聊天,其余的(RESTful API)工作正常,但是当JavaScript尝试连接到WS时,我得到了 WebSocket connection to
WebSocket connection to 'ws://<ip-address>:8888/chat' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
PHP服务器套接字是这样启动的
public function actionStart() {
$app = new App('localhost', 8888, '0.0.0.0');
$app->route('/chat', new Chat());
$app->run();
}
在JS中,我尝试连接到这个
this._socket = new WebSocket('ws://<ip-address>:8888/chat');
this._socket=newwebsocket('ws://:8888/chat');
我还在8080端口上尝试了它,它应该从那里被代理,但随后它返回了404错误
在端口80上,我有我的前端,在端口8080上,我的后端,到目前为止都在工作。我可以在端口8888上启动WebSocket,该端口未显示我检测到的任何错误,但当尝试连接到它时,我会收到上面的错误消息。这只是为了测试,我还没有SSL证书,但首先我想让它工作,还是我需要一个?我尝试了很多在网上找到的URL组合,但到目前为止没有一个有效
就在写这篇文章的时候,我注意到套接字是从/var/www/html\u backend
启动的,而不是/var/www/html\u backend/web
,DocumentRoot
是否会导致代理问题
我希望有人能给我指出正确的方向,因为我找到的所有“有效”解决方案到目前为止都没有什么帮助
致以最诚挚的问候我在Digitalocean用PHP Linux和ratchet构建了Websocket,它的工作中继很好(我的示例使用wss,但您也可以使用ws来实现) 我构建它的方式: 服务器端棘轮websocket:
$wsServer = new WsServer(new Chat);
$server = IoServer::factory(
new HttpServer($wsServer),
8000
);
Apache httpd-ssl.conf:
<VirtualHost _default_:443>
ProxyPass /wss2/ ws://your.domain:8000
而不仅仅是在ratchet中使用以下命令运行php websocket:php server.php
你可以走了。检查你的端口是否打开。套接字服务器是一个痛苦的。。。。我不确定您打算使用它做什么,但您可能希望研究类似的东西,这是一个消息队列。完全成熟、易于使用、畅销等@ArtisticPhoenix这不是我第一次听说插座。。。xD,但是的,端口是开放的。大约3年前,我做了一个实验,然后决定使用RabbitMq,因为它有更多我希望构建或维护的功能。我会看一看,但现在我很想让它工作,只是为了它。你没有尝试
::1
,但我怀疑这是个问题。你用的是什么浏览器,Chrome?我刚读到chrome不允许非SSL连接,你可以试试FIrefox。我决不会建议你尝试IE或Edge,我经历了IE6天。。。当使用新的WsServer(..)时,loliswss2是默认路由代码>?您是否已在非默认端口/将wss://your.domain:8080/wss2/
在JS中也能正常工作?这不是默认设置,这就是我们配置httpd ssl文件(默认设置:your.domain)的原因。您必须在服务器和客户端中使用相同的端口,但我的意思是,在我的代码中,现在我有了这个$app->route('/chat',new chat())代码>和在我的vhostProxyPass”/chat/“ws://localhost:8888/”
中。我是否必须连接到ws://your.domain:8080/chat/chat
才能完成该路线,或者该路线是如何工作的?但我稍后将尝试您的服务器创建代码。=)将端口添加到路由,并在js中将其更改为:ws://your.domain/chat(或者试试我的完整评论)
<VirtualHost _default_:443>
ProxyPass /wss2/ ws://your.domain:8000
wss://your.domain/wss2/