【问题标题】:socket.io as a clientsocket.io 作为客户端
【发布时间】:2012-02-20 23:36:24
【问题描述】:

有没有办法将socketio作为客户端运行(不是浏览器,而是nodejs脚本)

我需要将数据从服务器广播到一些客户端(浏览器)和另一台 linux 机器(只运行 nodejs 来获取变量,没有浏览器)

欢迎任何想法

问候

【问题讨论】:

标签: node.js socket.io nowjs-sockets


【解决方案1】:

github上有一个实现socket.io客户端的项目。看这里:

https://github.com/remy/Socket.io-node-client

var socket = new io.Socket('localhost', 8000);

socket.on('connect', function () {
  console.log('yay, connected!');
  socket.send('hi there!');
});

socket.on('message', function (msg) {
  console.log('a new message came in: ' + JSON.stringify(msg));
});

socket.connect();

【讨论】:

    【解决方案2】:

    我相信你可以只使用 socket.io-client。需要它并在你的 node.js 代码中使用它,就像在客户端/浏览器中一样。我现在也发现了这个有趣的教程 => http://liamkaufman.com/blog/2012/01/28/testing-socketio-with-mocha-should-and-socketio-client/

    【讨论】:

      【解决方案3】:

      正如Alfred 所指出的,只需require('socket.io-client') 并运行$ node client.js。我确认这适用于socket.io-client v1.4.8。为了演示,请看以下代码:

      // client.js
      var io = require('socket.io-client');
      var socket = io('http://localhost:3000/');
      socket.on('connect', function () {
        socket.emit('echo', {msg: 'Hello universe!'}, function (response) {
          console.log(response.msg);
          socket.disconnect();  // otherwise the node process keeps on running.
        });
      });
      

      服务器:

      // server.js
      var io = require('socket.io')(3000);
      io.on('connection', function (socket) {
        socket.on('echo', function (data, response) {
          response(data);
        });
      });
      

      使用$ node server.js 启动服务器,然后在另一个终端中启动客户端$ node client.js,然后观看神奇的发生:

      $ node client.js
      Hello universe!
      

      有效!一种非常方便的方法,例如测试您的 socket.io API。

      【讨论】:

        【解决方案4】:

        在这种情况下,使用 http 请求。

        var port=3000; //original port
        
        var bridge = express.createServer(
              express.logger()
            , express.bodyParser()
        );
        bridge.post('/msg', function(req, res){ 
            res.writeHead(200,{'Content-Type':'text/plain'});
            //res.write(req.params.msg);
            res.end(req.params.msg);
        
            console.log();
            io.sockets.in().emit('message', "chat", req.body.user_id,req.body.msg);  //SEND!
        });
        bridge.listen(parseInt(port)+1,function() {
          var addr = bridge.address();
          console.log('   app listening on http://' + addr.address + ':' + addr.port);
        });
        

        这是我的代码。 祝你好运。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-01-13
          • 1970-01-01
          • 2011-08-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-07
          相关资源
          最近更新 更多