我试图通过使用棘轮来测试简单的WebSockets乒乓响应。我的WebSocket服务器看不到来自web浏览器的WebSocket客户端的任何响应,但浏览器可以很好地看到WebSocket服务器发送的数据包。我在找原因。
我目前的猜测是:
wsclient.send(encodeFrame(“{'action':'pong'}”));
127.0.0.1:65000
运行
/API
重定向到127.0.0.1:65000
(棘轮)直接连接到CloudFlare的缓存IP提供的主机。socket连接到wss://host/api
。连接再次出现在Ratchet上的应用程序实现级别(onopen
)。我的浏览器可以看到ping
数据包,所以从Ratchet发送数据包可以正常工作。
但是,然后我尝试从浏览器向ping
发送pong
应答,并且onmessage
方法不会在Ratched的任何级别上触发。连接保持打开,如果我使用Fiddler观察,则会不断发送pings和pongs,但WebSocket服务器从不接收这些pongs(onmessage
)。
Fiddler的WebSocket流显示,来自浏览器的pongs有“通过key:
屏蔽的数据”,但来自Ratched的ping没有被屏蔽。
页面加载:
本地计算机http://host/→CloudFlare HTTPS重定向HTTPS://host/→http://host-with-amazon-public-ip/→http://host-with-amazon-nat-ip/→将wss WebSocket连接加载到/API
的HTML+JS页面
到/API
的WebSocket连接:
CloudFlare HTTPS重定向wss://host/api→http://host-with-amazon-public-ip/api→http://host-with-amazon-nat-ip/api→本地服务器nginx重定向/api→127.0.0.1:65000
→连接升级→WebSocket流→web浏览器的WebSocket流
server {
listen 80;
server_name test.example.com;
root /home/raspi/test/public;
autoindex off;
index index.php;
access_log /home/raspi/test/http-access.log;
error_log /home/raspi/test/http-error.log notice;
location / {
index index.php;
try_files $uri $uri/ /index.php?$args;
}
location /api {
access_log /home/raspi/test/api-access.log;
error_log /home/raspi/test/api-error.log;
expires epoch;
proxy_ignore_client_abort on;
proxy_buffering off;
proxy_request_buffering off;
proxy_cache off;
proxy_pass http://127.0.0.1:65000/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Connection "keep-alive, Upgrade";
proxy_set_header Upgrade "websocket";
proxy_set_header Accept-Encoding "gzip, deflate";
proxy_set_header Sec-WebSocket-Extensions "permessage-deflate";
proxy_set_header Sec-WebSocket-Protocol "game";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ^~ /js/app/ {
try_files $uri /;
expires epoch;
add_header Cache-Control "no-cache" always;
}
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
try_files $uri /;
access_log off;
expires max;
}
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
location ~ /\. { access_log off; log_not_found off; deny all; }
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Web套接字目前仅在业务和企业级可用。你说过你在免费计划中。这就是问题所在。
我读过这篇stackoverflow帖子。不幸的是,我的PAAS支持不使用httpd.conf。他们建议我直接在。htaccess中添加ProxyPass。 关于在httpd.conf文件中添加以下一行,在这里我要告知,我们在服务器上没有使用httpd,因为服务器是基于Debian的,我们使用的是Apache web服务器。我相信您可以在htaccess文件中使用相同的代码行,或者如果您可以咨询开
问题内容: 我有一个棘手的聊天服务器文件 我使用Websocket进行连接,效果很好 我想要安全连接,因此我尝试使用SSL连接,但无法正常工作。 我的问题是 如何将Websocket与SSL连接连接 任何的想法? 问题答案: 如果您使用的是Apache Web服务器(2.4或更高版本),请在httpd.conf文件中启用以下模块: mod_proxy.so mod_proxy_wstunnel.s
我有一个Angular 4和Java/Spring MVC/Jhipster网站,我正试图使用本教程创建一个websocket(使用sock js和stomp.js)。我可以连接到websocket,但是当我尝试从Java代码向客户端发送数据时,什么也没有发生。请帮帮我。 下面,我只是试图访问我的浏览器中的http://localhost:9001/api/websocket/testSend,并
到“ws://example.app:8080/”的WebSocket连接失败:在收到握手响应之前连接已关闭
问题内容: 为了澄清当我询问浏览器到浏览器的通信时,我的意思是在转发消息之间没有服务器。我想为游戏实现这样的功能。如果无法在websockets中使用p2p,是否有类似的选择?任何帮助表示赞赏。 问题答案: 否。浏览器只能启动WebSockets连接,不能接收它们。在W3C的浏览器API规范只定义了如何启动出站连接。 您可以创建一个既可以启动也可以接受WebSockets连接的应用程序,但是浏览器