我一直在调查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'导入* as 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!!!');
});
};
答案 0 :(得分:1)
将socketMVC.to
替换为socketMVC.io.to
。
答案 1 :(得分:1)
我从未使用过Socket.IO MVC,但在阅读完帖后,我想我永远不会使用它。它看起来不像MVC,它根本不是一个包装器。我编写了一个MVC框架(包括HTTP和套接字),我认为当你将代码放在控制器中而不是在io.on(“连接”)本身时,它只算作MVC。