【发布时间】:2017-09-27 17:15:22
【问题描述】:
我一直在研究这个Socket.io MVC node.js,但我目前正在苦苦挣扎。
它在文档中说:
Socket.io API 的
由于 Socket.MVC 只是 Socket.io 的一种包装机制,所有的 可以使用 Socket.MVC 模块使用相同的 API。请看一个 通过访问 Socket.io Github 列出所有可用的 API 页面,或http://socket.io(取决于您的版本)
我的问题是我找不到将套接字 MVC 发送到房间的方法。
socketMVC.to(userid).emit('message', {message:2});
应该有效,但无效。知道我该怎么做吗?
编辑: userid 与此处分配的相同: 从 'socket.io-client' 导入 * 作为 io;
下载
oninit:
this.socket = io(this.socketurl);
var privateRoom = socket.request.session.passport.user;
socket.join(privateRoom);
this.socket.on('message', (data) => {
// this.messagesCounter = this.messagesCounter + 1;
alert("OMG?");
});
编辑,在 server.js 中
io.on('connection',function(socket) {
console.log('user connected');
OnlineUsers.push(socket);
// socket.join('');
console.log(socket.request.session.passport);
console.log("user is connceted");
socketMVC.init(io, socket, {
debug: true,
filePath: ['./src/routes/sockets.js']
});
socket.on('disconnect', function(){
console.log('user disconnected');
});
socket.on('add-message',function (message) {
io.emit('message', {type:'new-message', text: message});
});
socket.on('myevent', function(someData) {
console.log("MYEVENT WORKS???????");
});
});
sockets.js
var path = require('path');
module.exports = function (socket) {
var privateRoom = socket.request.session.passport.user;
socket.join(privateRoom);
socket.on('testing', function() {
console.log('GOT SOME SORT OF RESPONSE!!!');
});
};
【问题讨论】:
-
你确定
userid是正确的吗? -
userid @Phix,与我分配的相同。所以是的
-
你能添加完整的代码吗?
-
基本上就是完整的代码@Arkerone
-
你在哪里得到套接字? socketMVC.on('connection')?
标签: javascript node.js socket.io