socket.io作为客户端

时间:2012-01-28 02:33:47

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

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

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

欢迎任何想法

此致

4 个答案:

答案 0 :(得分: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();

答案 1 :(得分:3)

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

答案 2 :(得分:1)

只需require('socket.io-client')并按照Alfred的指示运行$ 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的一种非常方便的方法。

答案 3 :(得分: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);
});

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