javascript - 套接字 IO 命名空间不适用于 Express
问题描述
我尝试在后端设置命名空间,
const server = require("http").createServer(app);
const connectedUsers = {};
const io = require("socket.io")(server, {
path: "/socket",
serveClient: false,
// below are engine.IO options
pingInterval: 10000,
pingTimeout: 5000,
cookie: false
});
const singularConnection = io.of("/singular-socket");
singularConnection.on("connection", socket => {
console.log("unique user connected with socket ID " + socket);
}
在我的客户上,我尝试联系,
const socket = io(GATEWAY, {
path: "/socket/singular-socket",
transports: ["websocket"],
jsonp: false
});
socket.connect();
socket.on("connect", () => {
console.log("connected to socket server");
});
我尝试了不同的 URL 变体,摆脱/socket
并移动其他东西,但我似乎无法让它工作。我在这里做错了什么?
解决方案
我没有任何使用 socket.io 的经验,但是从文档中...
要连接到命名空间,客户端代码将如下所示。
const socket = io('http://localhost/admin', {
path: '/mypath'
});
在这里,套接字使用自定义路径 mypath连接到admin命名空间。
请求 URL 将如下所示:localhost/mypath/?EIO=3&transport=polling&sid=(命名空间作为有效负载的一部分发送)。
按照以上几行,您的代码应该看起来像..
const socket = io("http://localhost/singular-socket", {
path: "/socket",
transports: ["websocket"],
jsonp: false
})
/singular-socket
命名空间在哪里/socket
,路径在哪里。
试试这个repl
推荐阅读
- angular - 访问 FormGroup 的 FormArray 的数据
- python - 用逗号分割字符串,'and's,'or's
- sql - 红移上镶木地板文件的 content_length
- r - 在 R 中固定日期
- mongodb - 使用带有 go-mongodb 驱动程序的 $gt 过滤器搜索文档
- multithreading - 主线程在基于线程池/任务的应用程序中做什么?
- asp.net-web-api - 在 Postman 中传递空字符串
- javascript - 可以在蚂蚁设计中更改日期选择器的图标吗?
- r - 基于具有两个匹配变量参数的函数创建数据框变量,其中参数顺序很重要
- reactjs - 如何从多个嵌套导航器导航到父级