在 nodejs 中将 socket.io 与网络套接字一起使用
Using socket.io with net socket in nodejs
有没有一种方法可以在 nodejs 中使用 socket.io 和网络套接字?所以最后我有主要服务监听端口,等待连接(网络套接字)和主要服务,同时监听客户端想要使用 socket.io 建立连接。
示例场景:
主要服务 运行 在端口 X 上列出来自客户端服务的任何连接请求。
客户端打开的 Web 浏览器使用 http 服务器连接到主服务
如果客户端服务(服务器 B)通过网络套接字传入任何数据,数据将通过 socket.io 发送到连接的客户端打开浏览器。
Nodejs 允许在同一个 运行 进程中打开 2 个端口。
以下示例显示:
端口 8124 上的主要服务列表,用于使用网络套接字的任何传入套接字连接。
主服务在端口 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>
有没有一种方法可以在 nodejs 中使用 socket.io 和网络套接字?所以最后我有主要服务监听端口,等待连接(网络套接字)和主要服务,同时监听客户端想要使用 socket.io 建立连接。
示例场景:
主要服务 运行 在端口 X 上列出来自客户端服务的任何连接请求。
客户端打开的 Web 浏览器使用 http 服务器连接到主服务
如果客户端服务(服务器 B)通过网络套接字传入任何数据,数据将通过 socket.io 发送到连接的客户端打开浏览器。
Nodejs 允许在同一个 运行 进程中打开 2 个端口。 以下示例显示:
端口 8124 上的主要服务列表,用于使用网络套接字的任何传入套接字连接。
主服务在端口 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>