在nodejs中使用socket.io和net socket
Posted
技术标签:
【中文标题】在nodejs中使用socket.io和net socket【英文标题】:Using socket.io with net socket in nodejs 【发布时间】:2016-01-21 19:24:36 【问题描述】:有没有办法可以在 nodejs 中使用 socket.io 和 net socket?所以最后我有监听端口的主服务,等待连接(网络套接字)和主服务,同时监听客户端想要使用 socket.io 建立连接。
示例场景:
在端口 X 上为来自客户端服务的任何连接请求运行的主服务列表。
客户端打开的网络浏览器使用http服务器连接到主服务
如果客户端服务(服务器B)通过网络套接字传入任何数据,数据将通过socket.io发送到连接的客户端打开浏览器。
【问题讨论】:
您能具体说明NET SOCKET
是什么意思吗?它是某种特定的协议吗?
NET SOCKET是socket连接,nodejs称之为net模块。 nodejs.org/api/…
【参考方案1】:
Nodejs 允许在同一个运行进程中打开 2 个端口。 下面的例子显示:
端口 8124 上的主要服务列表,用于使用 net socket 的任何传入套接字连接。
主服务在端口 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>
【讨论】:
干得好,但是,如果服务器 B 是 telnet 呢? 嗨,c.pipe(c); 是什么?用于?以上是关于在nodejs中使用socket.io和net socket的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 mysql 数据库中的 nodejs 和 socket.io 在网页上获得实时更新?
NodeJs - express 和 socket.io 同端口集成
如何在前端获取 socket.on 函数?事件被触发和处理。我正在使用 socket.io、NodeJS 服务器和 Redis.io