我有一个要求,我需要在节点服务器从普通node.js服务器调用后端的休息服务到套接字服务器之前发出socket.io消息。我试图想象我想要做的事情:
Client(sends data) -->
|->Node.js server (sends data to socket.io server --> Backend rest service
|->-- socket.io server
为此,我在我的普通节点server.js
中尝试了这个var io = require('./socket.io.js');
http.createServer(function(request,response) {
var restUrl; //Data I am getting from request
//Socket.io server information
var options = {
host: 'localhost',
port: '3000'
};
var socket = io.connect(options);
socket.on('connect', function () {
socket.send(restUrl);
});
}
但它没有用,给我这个错误:
TypeError: Cannot read property 'port' of undefined
at Socket.isXDomain (E:\Pradeep\BaaS\socket.io.js:1877:31)
at Socket.handshake (E:\Pradeep\BaaS\socket.io.js:1627:14)
at Socket.connect (E:\Pradeep\BaaS\socket.io.js:1699:10)
任何人都可以指导我做错了什么吗?基本上我试图监控我的节点服务器的实时活动。任何指导或帮助表示赞赏。
答案 0 :(得分:1)
您需要的是node.js服务器中的socket.io客户端。获取模块npm install socket.io-client
,然后使用以下示例 -
var http = require('http');
var io = require('socket.io-client');
var connected = 0;
var socket = io.connect('localhost', {
port: 3000
});
socket.on('connect', function(){
console.log("connected");
connected = 1;
});
http.createServer(function (req, res) {
if(connected == 1)
socket.emit('info', {my:'data'});
}).listen(1337);
答案 1 :(得分:0)
我担心为node.js设置socket.io是完全错误的方法。 正确的方法如下:
var app = require('express').createServer()
, io = require('socket.io').listen(app);
app.listen(80);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});