如何从远程机器访问 websocket
Posted
技术标签:
【中文标题】如何从远程机器访问 websocket【英文标题】:How to access websocket from remote machine 【发布时间】:2015-05-22 11:24:36 【问题描述】:我在java中创建了一个websocket服务器,glassfish服务器在8080端口托管它。websocket服务器的地址是ip:8080/EchoChamber/echo 我使用以下link 创建了这个 websocket 服务器 我的客户是一些嵌入式微控制器和我的基于 Web 的应用程序,我在其中查看结果(在 chrome IE 资源管理器中)。 我的客户端应用程序正在使用一些 java 脚本来建立与 websocket 服务器的连接:
<script type="text/javascript">
var webSocket =
new WebSocket("ws://ip:8080/EchoChamber/echo");
webSocket.onerror = function(event)
onError(event)
;
webSocket.onopen = function(event)
onOpen(event)
;
webSocket.onmessage = function(event)
onMessage(event)
;
function onMessage(event)
//display message in textboxes
问题是当我在本地主机上时,我可以在我的应用程序上查看结果,但是当我在远程桌面上时,Web 浏览器会给出远程 ip 上的页面未定义的错误。谁能告诉我如何将我的远程主机浏览器连接到 websocket 服务器。我试图从我的远程机器访问端口 ip:8080 并且我可以访问它,这意味着玻璃鱼服务器没有任何限制。是 websocket 设置了一些限制。谁能帮帮我。
【问题讨论】:
【参考方案1】:这是一个 javascript 代码而不是 java。我相信 javascript 对跨站点脚本有限制。这就是为什么它适用于 localhost 而不适用于其他主机。我认为您可以禁用浏览器中的安全设置,它可能会起作用,但通常是被禁止的。
【讨论】:
我说客户端在java脚本上,websocket服务器是用java编写的 这就是问题所在。如果该网站在您的计算机中打开,但它试图打开一个 websocke 到另一个 IP 它将失败。网站应该托管在某个服务器上,并且 websocket 必须在同一台服务器上。 实际上 websocket 在 glassflish 服务器上,而网站在 apache 服务器上。 :(【参考方案2】:包含 javascript 的 html 页面应该从同一个域呈现,否则浏览器安全性将不允许您连接到不同的主机(主机不提供内容或可能来自不同的域)
【讨论】:
以上是关于如何从远程机器访问 websocket的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 UCanAccess 访问远程机器上的数据库文件?
无法从远程机器访问 Python Flask 应用程序 [重复]