websocket 和 socket.io 之间的区别是什么

websocket 和 socket.io 之间的区别是什么,第1张

socketio封装了websocket,同时包含了其它的连接方式,比如Ajax。原因在于不是所有的浏览器都支持websocket,通过socketio的封装,你不用关心里面用了什么连接方式。

你在任何浏览器里都可以使用socketio来建立异步的连接。socketio包含了服务端和客户端的库,如果在浏览器中使用了socketio的js,服务端也必须同样适用。如果你很清楚你需要的就是websocket,那可以直接使用websocket。

可以是长连接。

关于socketio:

浏览器虽然也属于客户端的一种,但仅支持“单工”的 HTTP 通讯。有见及此,HTML5 新规范中推出了基于浏览器的 WebSocket,开发了底层的接口,允许用户能进行 更强大的操作,超越以往的 XHR。用户无须第三方框架就可以直接与 Node TCP 服务器 进行 Socket 通讯。

但又要认清一个事实,不是每个浏览器都可以顺利支持 WebSocket 的。于是 SocketIO (http://socketio)出现了,它提供了不支持 WebSocket 时候的降级支持,同时使得一些旧版本的浏览器也可以“全双工”地工作。优先使用的顺序如下:

WebSocket

Socket over Flash API

XHR Polling 长连接

XHR Multipart Streaming

Forever Iframe

JSONP Polling

以上选择XHR Polling 就可以保持长连接了。

客户端的IP自动获取,关键要看客户端的IP是由谁来分配的,如果都是有ISP提供的那么服务器利用IP去连接客户端就不太可能。可以尝试用下面两种思路解决:1、能否让客户机主动连接服务器。2、使用动态DNS。让每个客户机都申请一个动态域名,无论它的IP怎样变,当改变以后都会到DNS服务器进行注册,然后服务器使用主机的名字访问客户端。

python是最早实现web socket的语言之一,其下的大量框架都有不计其数的web socket的支持,也就是socketio的功能,其中,tornado提供了原生的支持,flask-socketio就是socketio的flask版(flask是python的web框架)。djanggo也有对应的框架,几乎可以说,常见的python的web框架全部实现了socketio的功能。说起websocket的支持,python说第二没人敢说第一。

1 客户端既然是浏览器,那server端应该用webserver,而不是一般的TCP socket server。

2 socketio是要用websocket配合的。所以server端也得用websocket server。

3 支持websocket的web框架有:tornado。可以试试用这个框架。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » websocket 和 socket.io 之间的区别是什么

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情