socket.io作为客户端
有什么办法可以运行socketio作为客户端(不是浏览器,而是一个nodejs脚本)
我需要从服务器向一些客户端(浏览器)和另一台Linux机器(只运行nodejs获取variables,不使用浏览器)传输数据。
任何意识都是值得欢迎的
问候
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();
我相信你可以使用socket.io-client。 需要在Node.js代码中使用它,就像在客户端/浏览器中一样。 我现在也发现这个有趣的教程=> http://liamkaufman.com/blog/2012/01/28/testing-socketio-with-mocha-should-and-socketio-client/
只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
,然后在另一个terminal上运行客户端$ node client.js
,观察发生的奇迹:
$ node client.js Hello universe!
有用! 一个非常方便的方法来testing你的socket.io API。
在这种情况下,使用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); });
这是我的代码。 祝你好运。