我的申请现在按照“教科书”的结构如下:
文件app.js:
var app = require("express").express();
var api = require("./routes/api"); //just an example of one route
app.use("/api",api);
...
var server = app.listen(8081);
var sockets = require("./routes/sockets")(server);
文件路径/ api.js:
var router = require("express").router;
route.get("/test", function(req,res) {
res.render("test.pug");
}
router.get("/f", function(req, res) {
//...some processing...
//I want to send a socket message here to a given socket id !!!
//
}
module.exports = router;
文件routes / sockets.js:
module.exports = function (server) {
var io - require("socket.io")(server);
io.use("....
io.on("connection",function(socket) {
socket.on("....
socket.on("....
}
}
以上工作适用于我的网页,例如/api/test
,它直接与sockets.js中的套接字函数对话。我现在需要的是能够从api.js内部向特定套接字ID发送套接字消息,如!!!
所示。我该怎么做?
答案 0 :(得分:0)
在一个班轮中使用
io.to(socket_id).emit('msgtcln');
完整示例(将3个文件合并为一个)。
"use strict";
var app = require("express")();
app.get("/test", function(req, res) {
res.send("Sending Hello");
io.to(id[0]).emit('msgtcln', {/* 3 */
name:"Sending data"
});
});
app.get("/f", function(req, res) {});
var server = app.listen(3000);
var io = require('socket.io')(server);
let id = [];
io.sockets.on('connection', function(socket) {
console.log("Socket connected");
id[0] = socket.id;
socket.on('disconnect', function(opt, cb) {
console.log("Socket disconnected");
});
});
这里我只是在/ test路由命中时通过id数组发送数据,你必须根据需要维护socket_id。
答案 1 :(得分:0)