我只是想让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
});
答案 0 :(得分:2)
我只是想让socket.io在我的/ home路线上听,但它似乎在听每一条路线?有没有办法让它只听我/ home路线?
客户端的Javascript要么连接到socket.io服务器,要么连接到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连接。