在服务器和任意NodeJS进程之间创建Web套接字流

时间:2015-02-15 09:25:38

标签: node.js sockets websocket socket.io server

让服务器在localhost:5000上运行,我想通过网络套接字从另一个NodeJS进程连接到该服务器。

根据我对Web套接字的经验,我总是需要服务器对象来创建一个Web套接字服务器。

var http = require('http');

// create http server
var server = http.createServer(function(req, res) {
   // serve files and responses
   ...
});

// Socket.io server listens to our app
var io = require('socket.io').listen(server);

// Send current time to all connected clients
function sendTime() {
    io.sockets.emit('time', { time: new Date().toJSON() });
}

// Send current time every 10 secs
setInterval(sendTime, 10000);

// Emit welcome message on connection
io.sockets.on('connection', function(socket) {
    socket.emit('welcome', { message: 'Welcome!' });
    socket.on('i am client', console.log);
});

server.listen(3000);

这是使用socket.io的一个小例子。无法获取server变量(因为此服务器将部署在云中的某个位置),如何通过Web套接字连接到此服务器?

一个丑陋的解决方案是通过HTTP请求,但那不是网络套接字。我想保持连接打开并在那里管道数据。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您将socket.io-client模块require()放入您的其他nodejs服务器并使用该客户端模块从其他服务器(在这种情况下将是客户端)并从该服务器连接到此之一。

此处的示例代码:https://github.com/automattic/socket.io-client

var socket = require('socket.io-client')('http://localhost');
socket.on('connect', function(){});
socket.on('event', function(data){});
socket.on('disconnect', function(){});