繁体   English   中英

在服务器端通过socket.io-client使用Socket.IO

[英]Using Socket.IO in server side with 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 )”,现在我想获取从应用程序发出的消息。 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM