在nodejs中使用socket.io和net socket

有没有一种方法,我可以使用socket.io与networking套接字在nodejs? 所以最后我有监听端口的主要服务,等待连接(net socket)和主监听客户端要用socket.iobuild立连接。

示例场景:

  • 主服务在端口X上运行列表以处理来自客户端服务的任何连接请求。

  • 客户端的打开的Web浏览器使用http服务器连接到主要服务

  • 如果客户端服务器(服务器B)通过networking套接字传入数据,数据将通过socket.io发送到连接的客户端打开浏览器。

双字母组合

Nodejs允许在同一个运行的进程中打开2个端口。 以下示例显示:

  • 主要服务列表在端口8124使用networking套接字的任何传入的套接字连接。

  • 主服务在端口8081上监听任何传入的http连接,客户端可以使用socket.io接收来自主服务的任何数据

Expressjs版本:4.13.3
socket.io版本:1.3.7

例如:

主要服务

 var express = require('express'); var app = express(); var server = require("http").Server(app); var io = require("socket.io")(server); var net = require('net'); var netServer = net.createServer(function(c) { console.log('client connected'); c.on('end', function() { console.log('client disconnected'); }); c.write('hello\r\n'); c.pipe(c); }); // main service listing to any service connection on port 8124 netServer.listen(8124); app.get('/', function (req, res) { res.sendFile(__dirname+'/index.html'); }); app.use(express.static(__dirname+'/static')); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); server.listen(8081); 

客户服务(服务器B):

  var net = require('net'); var client = new net.Socket(); client.connect(8124, '127.0.0.1', function() { console.log('Connected'); client.write('Hello, server! Love, Client.'); }); client.on('data', function(data) { console.log('Received: ' + data); }); client.on('close', function() { console.log('Connection closed'); }); 

的index.html

 <script src="/js/socket.io.js"></script> <script> var socket = io.connect('http://localhost:8081'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script>