7

有什么方法可以将 socketio 作为客户端运行(不是浏览器,而是 nodejs 脚本)

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

欢迎任何想法

问候

4

4 回答 4

4

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();
于 2012-01-28T03:08:58.373 回答
3

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

于 2012-01-30T06:53:32.320 回答
1

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

// 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。

于 2016-09-29T12:54:37.910 回答
0

在这种情况下,请使用 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);
});

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

于 2012-02-10T02:32:11.307 回答