1
bsbgong 2014-11-27 20:24:06 +08:00 1
socket.io是一个WebSocket协议的实现,用它你可以进行websocket通信,这是应用层
node.js net.socket是系统socket接口,用它你可以操作linux socket,这是传输层 |
2
bsbgong 2014-11-27 20:31:53 +08:00 1
再补充一点websocket: http://tools.ietf.org/html/rfc6455
websocket协议本质上也是使用系统socket,它是把socket引入了http通信,也就是不使用80端口进行http通信。它的目的是建立全双工的连接,可以用来解决服务器客户端保持长连接的问题。 socket.io只是websocket协议的一种实现。除此之外,HTML5也对websocket定义了对应的API,由浏览器等客户端程序实现它。这样最上层的web应用程序就能直接使用websocket连接了。 |
3
skybr 2014-11-27 20:54:53 +08:00
如果寻求net.socket和socket.io之间关系, net.socket操作tcp, 往上的http基于tcp, http再往上就是不同浏览器了, socket.io分拆出的engine.io就是基于各种transports解决不同浏览器类似websocket双向通讯需求兼容的包, 再往上的socket.io是基于engine.io的一系列约定俗成的通用业务封装.
|
4
yanchao7511461 2014-11-28 09:40:53 +08:00
觉历
|
5
hussion 2014-11-28 09:47:26 +08:00 1
net.socket 是node.js提供的socket编程接口,只能用于socket通信;
socket.io是一个websocket库,不仅支持websocket,还能优雅降级,支持flash-socket,long-polling等通信。 |
9
ahtsiu 2014-11-28 14:57:49 +08:00 1
|
10
headwindx OP 感谢大家的积极回复!
|
11
bsbgong 2014-11-28 19:34:27 +08:00
@headwindx
你要记得有server和client两个角色。 net.socket是node模块,只能在server端使用它,宿主是node,操作的是node所在的操作系统的socket资源。 socket.io则包含了两个模块,分别在server端和client端使用。client端的宿主一般是浏览器。 它俩都不是框架,只能叫库或者模块。 你动手使用socket.io写一个聊天程序,就明白了。 |
12
headwindx OP |