有什么方法可以将 socketio 作为客户端运行(不是浏览器,而是 nodejs 脚本)
我需要将数据从服务器广播到一些客户端(浏览器)和另一台 linux 机器(只运行 nodejs 来获取变量,没有浏览器)
欢迎任何想法
问候
有什么方法可以将 socketio 作为客户端运行(不是浏览器,而是 nodejs 脚本)
我需要将数据从服务器广播到一些客户端(浏览器)和另一台 linux 机器(只运行 nodejs 来获取变量,没有浏览器)
欢迎任何想法
问候
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/
正如Alfred所指出的那样require('socket.io-client')
运行。我确认这适用于v1.4.8。为了演示,请参见以下代码:$ node client.js
socket.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。
在这种情况下,请使用 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);
});
这是我的代码。祝你好运。