首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让socket.io只在一条特定的路径上监听?

如何让socket.io只在一条特定的路径上监听?
EN

Stack Overflow用户
提问于 2018-06-06 02:08:54
回答 1查看 2K关注 0票数 0

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

代码语言:javascript
复制
const server = require('http').Server(app);
const io = require('socket.io')(server);

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

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

代码语言:javascript
复制
const io = require('socket.io')(3000, {
  path: '/home',
  serveClient: true,
  // below are engine.IO options
  pingInterval: 10000,
  pingTimeout: 5000,
  cookie: false
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-06 02:26:08

我只想让socket.io在我的/home路径上监听,但它似乎在每条路径上都在监听?有没有办法让它只听我的/home路线?

客户端的Javascript要么连接到socket.io服务器,要么不连接-它是二进制的。像http请求这样的多个路由是没有用的。如果您希望多个连接“通道”用于多个连接,socket.io支持连接和侦听特定的命名空间。

好的,所以当站点加载时,它只会监听站点上的所有内容?如何只改变我的一个网页上的东西,如果它是听整个网站?或者这不会让事情慢下来吗?

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

要使部分页面在socket.io上连接,要么在某些页面中使用不同的Javascript,要么让您的普通Javascript检查页面的路径,并且只在socket.io上连接特定的页面路径。

例如,您可以在您的网页Javascript中获得以下内容:

代码语言:javascript
复制
var socket;
if (window.location.pathname === "/home") {
     socket = io();
     socket.on(...);
}

这将允许您的普通Javascript (在许多页面中)只在您的socket.io页面中创建一个/home连接。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50711302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档