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

前端之家收集整理的这篇文章主要介绍了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项目可以实现 – 但这不太可能.与服务器的开发人员交谈,了解他如何实现“套接字服务器”.

猜你在找的JavaScript相关文章