在服务器端使用Socket.IO和Socket.IO-client



我在我的app.js中使用socket.io,并用express框架配置它,现在当我运行应用程序时,application和socket.io都将启动,我可以在客户端和app.js之间发出消息。

app.js(服务器)

var express = require('express'),
    app = express(),
    http = require('http'),
    server = http.creatServer(app),
    socket = require('socket.io'),
    io = socket.listen(server);
server.listen(3000);    
io.sockets.on('connection', function(client){
    client.on('message', function(msg){
        io.sockets.emit('message', msg);
    });
});

客户:

<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
    var server = io.connect('http://127.0.0.1:3000');
    server.emit('message', 'Hello World');
</script>

但我想在其他控制器中使用套接字。。。我使用"socket.io-client"(https://npmjs.org/package/socket.io-client)",现在我想接收消息从app.js向所有套接字发出的。

controller.js(服务器)

var io = require('socket.io-client'),
    socket = io.connect('127.0.0.1', {
        port: 3000
    });
socket.on('connect', function(){
    console.log('CONNECTED!!');
    socket.on('message', function(msg){
        console.log("New message:", msg);
    });
});

它无法连接!

如果你不在乎谁收到消息,你可以从socket.io进行全局广播。这在控制器内部有效。

您没有使用客户端套接字进行发射。io是socket.io实例,而不是连接的客户端套接字。

服务器内

io.sockets.on('connection', function(client){
    client.on('message', function(msg){
      client.emit('message', msg);
  });
});

如果你需要广播,那么你可以使用io实例

io.socket.sockets.emit('message', msg);
var io = require('../socket/sio').initialize(server);
app.set('socketio', io)

并且在您的控制器中:

var io = req.app.get('socketio');
io.to(socketId).emit('sendData', data);

相关内容

  • 没有找到相关文章

最新更新