[英]How to get socket.io to only listen on one specific route?
我只想让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
});
我只想让socket.io在/ home路由上侦听,但似乎在每条路由上侦听? 有没有办法让它只听我的/ home路由?
客户端的Javascript要么连接到socket.io服务器,要么没有连接-它是二进制的。 没有多个路由可以使用,例如http请求。 如果您想为多个连接使用多个单独的连接“通道”,socket.io支持连接和侦听特定的名称空间。
好的,所以它只是在加载网站时监听网站上的所有内容? 如果它正在监听整个网站,那么如何只更改其中一个页面上的内容? 还是这不会减慢速度?
socket.io服务器仅侦听传入的连接。 它与路线无关。
要只让您的某些页面在socket.io上连接,您可以在某些页面中使用不同的Javascript,或者让您的通用Javascript检查页面的路径,而仅在socket.io上连接特定的页面路径。
例如,您可以在网页Javascript中使用它:
var socket;
if (window.location.pathname === "/home") {
socket = io();
socket.on(...);
}
这将使您的通用Javascript(存在于许多页面中)只能在/home
页面中创建一个socket.io连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.