Socket.io MVC node.js发射到房间

时间:2017-09-27 17:15:23

标签: javascript node.js socket.io

我一直在调查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!!!');
    });
};

2 个答案:

答案 0 :(得分:1)

socketMVC.to替换为socketMVC.io.to

答案 1 :(得分:1)

我从未使用过Socket.IO MVC,但在阅读完帖后,我想我永远不会使用它。它看起来不像MVC,它根本不是一个包装器。我编写了一个MVC框架(包括HTTP和套接字),我认为当你将代码放在控制器中而不是在io.on(“连接”)本身时,它只算作MVC。