gpt4 book ai didi

javascript - 如何让socket.io只监听一个特定的路由?

转载 作者:行者123 更新时间:2023-11-28 17:29:51 25 4
gpt4 key购买 nike

我只想让 socket.io 监听我的/home 路由,但它似乎在监听每条路由?有没有办法让它只听我的/home 路线?这就是我所拥有的:

const server = require('http').Server(app);
const io = require('socket.io')(server);

io.on('connection', function(socket){
console.log('a user connected');
});

这是我尝试过的,但这只是在主路径上显示一个 JSON 文件

const io = require('socket.io')(3000, {
path: '/home',
serveClient: true,
// below are engine.IO options
pingInterval: 10000,
pingTimeout: 5000,
cookie: false
});

最佳答案

I'm only wanting socket.io to listen on my /home route but it seems to be listening on every route? Is there a way to get it only to listen to my /home route?

客户端的 Javascript 要么连接到 socket.io 服务器,要么不连接 - 它是二进制的。与 http 请求一样,多个路由是没有用的。如果您想要多个连接的多个单独的连接“ channel ”,socket.io 支持连接和监听特定 namespace 。

Ok so it just listens to everything on the site when the site is loaded? How do I only change things on one of my pages if it is listening to the whole site? Or does that not slow things down?

socket.io 服务器仅监听传入连接。它与路线无关。

要仅将部分页面连接到 socket.io,您可以在某些页面中使用不同的 Javascript,或者让通用 Javascript 检查页面的路径,并且仅针对特定页面路径连接到 socket.io。

例如,您可以在网页 Javascript 中包含以下内容:

var socket;
if (window.location.pathname === "/home") {
socket = io();
socket.on(...);
}

这将允许您的通用 Javascript(存在于许多页面中)仅在您的 /home 页面中创建 socket.io 连接。

关于javascript - 如何让socket.io只监听一个特定的路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711302/

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