gpt4 book ai didi

javascript - Socket.io,为什么它需要一个http服务器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:31:27 24 4
gpt4 key购买 nike

查看来自 Socket.IO 库(或任何其他示例)的以下示例:

// note, io(<port>) will create a http server for you
var io = require('socket.io')(80);

io.on('connection', function (socket) {
io.emit('this', { will: 'be received by everyone'});

socket.on('private message', function (from, msg) {
console.log('I received a private message by ', from, ' saying ', msg);
});

socket.on('disconnect', function () {
io.emit('user disconnected');
});
});

似乎 Socket.IO 总是依赖于一个 http 服务器,以至于它会为你创建一个,就像上面的例子一样。

既然websockets不是HTTP,为什么还需要http服务器呢?如果它只是为了后备,为什么它集成得如此周到?

最佳答案

Since websockets are not HTTP, why are http servers needed?

您的问题似乎基于的前提是 socket.io 是一个 websocket 库,但事实并非如此。

这是一个实时的、双向的基于事件的通信库(来自主页的 blurb)。它使用的一种传输方式是 websockets,但它也提供其他传输方式 (XHR/JSONP),不仅仅是作为后备,也适用于不支持/不需要/不需要 websockets 的情况。

在传输之上,它提供了额外的功能,如分段(命名空间、房间)、确认、广播等。

即使可以使用 websockets,初始连接设置也是通过 HTTP 完成的。此外,socket.io 服务器将附加到 HTTP 服务器,因此它可以通过 /socket.io/socket.io.js 为自己的客户端代码提供服务。

就是说,尽管您不需要常规 websockets 的 HTTP 服务器,但不可否认的是,websocket 协议(protocol)在设计时就考虑了 HTTP(允许 HTTP 和 websocket 服务器共同-存在于相同的 TCP 端口上)。

关于javascript - Socket.io,为什么它需要一个http服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com