首先,抱歉我的英语不好:)
我的Java应用程序(多人游戏服务器)使用此程序包使用websockets在客户端浏览器中与Web应用程序通信:https://github.com/TooTallNate/Java-WebSocket
我在运行应用程序时遇到问题:只有我可以连接到websocket服务器,其他主机上的客户端不能这样做。在浏览器中我像往常一样建立连接,这里的地址肯定是正确的:
new WebSocket("ws://"+serverIp+":8787");
当我从我自己的主机连接到在同一主机上运行的websocket服务器时,它运行得很好。当其他主机尝试连接到我时,连接未建立:在浏览器中WebSocket对象的.readyState为0(虽然它应该是1),甚至服务器也不接受任何握手(服务器控制台中的onClientOpen没有输出,我甚至试图从某些WebSocketServer类的方法中获取任何输出。
其他主机仍在接收,例如,来自同一主机上80端口上的webserver的Web应用程序的静态内容。问题不在于关闭的8787端口:我检查了它,它是打开的。
其他主机无法连接到我的websocket服务器的原因是什么?
答案 0 :(得分:3)
WebSockets使用跨源权限系统。您可能需要告诉WebSocket服务器接受来自不仅仅是本地主机的连接。 Origin的验证发生在WebSocket握手期间,这可能发生在onclientOpen之前。