[英]Emitting socket.io messages from plain node.js server
我有一个要求,在此之前,我的节点服务器需要从普通的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)
谁能指导我我做错了什么? 基本上,我正在尝试监视节点服务器的实时活动。 任何指导或帮助表示赞赏。
您需要的是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);
恐怕为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);
});
});
资料来源: http : //socket.io/#how-to-use
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.