Nodejs 长连接net 和 Socket.io
- OSI模型 / TCP / UDP 的概念和大致区别;
- 长连接socket 和 短连接http 的区别;
- Nodejs 提供 Net 模块提供用于终端的网络通讯,
var net = require('net');
- 创建server.js
var net = require('net'); var server = net.createServer(function(connection){ connection.on('end', function(){ console.log('client disconnect'); }); connection.write('Hello world!\r\n'); connection.pipe(connection); }); server.listen(8080, function(){ console.log('Server is listening'); });
- 创建client.js
var net = require('net'); var client = net.connect({port: 8080}, function() { console.log('连接到服务器!'); }); client.on('data', function(data) { console.log(data.toString()); client.end(); }); client.on('end', function() { console.log('断开与服务器的连接'); });
基于网页的WebSocket.
- 安装socket.io
- 编写服务端代码
var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.send('<h1>Welcome Realtime Server</h1>'); }); .....
- 编写客户端html代码
- 引入socket.io文件
- 客户端连接服务器的js代码
//连接websocket后端服务器 this.socket = io.connect('ws://172.16.0.254:3000'); //告诉服务器端有用户登录 this.socket.emit('login', {userid:this.userid,username:this.username}); //监听新用户登录 this.socket.on('login', function(o){ console.log(o); //处理 ... }); //监听用户退出 this.socket.on('logout', function(o){ console.log(o); //处理 ... }); //监听消息发送 this.socket.on('message', function(obj){ console.log(obj); //处理消息 ... });
网友评论