socket.io как клиент - PullRequest
       51

socket.io как клиент

7 голосов
/ 28 января 2012

есть ли способ запустить socketio в качестве клиента (не браузер, а скрипт nodejs)

Мне нужно передать данные с сервера некоторым клиентам (браузерам) и на другую машину Linux (толькозапуск nodejs для получения переменных, без браузера)

Любые идеи приветствуются

С уважением

Ответы [ 4 ]

4 голосов
/ 28 января 2012

На 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();
3 голосов
/ 30 января 2012

Полагаю, вы могли бы просто использовать socket.io-client.потребуйте это и используйте это в своем коде node.js как в клиенте / браузере.Я также нашел этот интересный урок прямо сейчас => http://liamkaufman.com/blog/2012/01/28/testing-socketio-with-mocha-should-and-socketio-client/

1 голос
/ 29 сентября 2016

Просто 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.

0 голосов
/ 10 февраля 2012

В этом случае используйте 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);
});

Это мой код. удачи.

...