微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 没有node.js服务器的客户端socket.io

要在客户端使用socket.io,通常我们启动一个node.js服务器,如下所示:
<script src="/socket.io/socket.io.js"></script>

或与特定端口:

<script src="http://localhost:3700/socket.io/socket.io.js"></script>

问题是:

是否有必要使用node.js服务器来提供socket.io.js?

…或者是可能的

一个本地的socket.io.js副本,而不是每次我们需要socket.io去服务器?

喜欢,我们去查看源代码并复制我们从脚本标签的源头获得的所有东西,

粘贴并保存为socket.io-local.js,以便下次使用时:

<script src="socket.io-local.js"></script>

会这样工作吗?

更新

感谢大家的响应,

我问这个是因为在涉及的情况下,我实际上没有访问服务器的权限:

我正在写客户端以连接到用Java编写的其他开发人员的Socket Sever.

因此,我必须想办法解决我没有为我提供服务器的事实.

从我一直在测试,
这样似乎工作,但我真的不知道幕后发生了什么.

解决方法

您显然可以在任何地方托管socket.io客户端库并将其拉入页面.但是,它几乎肯定不会与您的基于Java的服务器一起使用.

要理解为什么,你需要了解什么socket.io真正在幕后;客户端库只是其中的一小部分.

Socket.io实际上定义和实现了its own protocol,用于浏览器和服务器之间的实时通信.它以支持多种传输的方式执行此操作:例如,如果用户的浏览器或代理不支持WebSockets,则可以回退到long polling.

socket.io客户端实际做的是:

>为/socket.io/1发出XHR GET请求.服务器响应会话ID,配置超时和支持的传输.
>客户端选择用户浏览器支持的最佳传输.在现代浏览器中,它将使用WebSockets.
>如果支持WebSockets,它将创建一个新的WebSocket,以启动WebSocket连接(具有升级的HTTP GET:websocket头)到特殊URL – /socket.io/1/websocket/\u0026lt;session id&gt ;.
>如果浏览器不支持WebSockets或者无法连接(除了不支持WebSocket请求的代理,过滤器,网络安全设备等外,还有许多中间人),该库将退回到XHR长轮询,并向/socket.io/1/xhr-polling/\u0026lt;sesion id>发出XHR请求.在新消息可用或达到超时之前,服务器不响应该请求,客户端在此时会重复XHR请求.

Socket.io的服务器组件处理这个混乱的另一端.它处理/socket.io/下的所有URL,设置会话,解析WebSocket升级,实际发送消息和一堆其他簿记.

如果没有由socket.io服务器提供的所有服务,客户端库就没用了.它只会对您的服务器上不存在的URL发出XHR请求.

我的猜测是,您的基于Java的服务器只是实现了WebSockets协议.您可以使用the browser-provided WebSocket APIs直接连接到它.

您的服务器可能确实实现了socket.io协议 – 有几个被遗弃的Java项目可以实现 – 但这不太可能.与服务器的开发人员交谈,了解他如何实现“套接字服务器”.

原文地址:https://www.jb51.cc/js/154477.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐