socket(双工协议)
网络中的两个程序,经过一个双向的链接来实现数据的交换,咱们把链接的一端称为socket
socketClient.js
web
var net = require('net'); var hostname = '127.0.0.1'; var port = 9000; var client = new net.Socket(); client.setEncoding('utf-8'); // 与服务端创建链接 client.connect(port,hostname,function() { client.write('你好啊'); }) client.on('data',function(data) { // console.log(data); say() }) // 逐行读取 const readline = require('readline'); // 创建通讯标准 var r1 = readline.createInterface({ input:process.stdin, //input标准 output:process.stdout //out 标准 }) function say(){ r1.question('请输入:',function(inputStr) { if(inputStr === 'bye') { client.destroy() console.log('客户端的socket退出') } else { client.write(inputStr + '\n') } }) }
socketServer.js
websocket
var net = require('net'); var clientServer = net.createServer(); var clientMap = new Object; // 加一个标识 var i = 0; // 接收客户端的链接 clientServer.on('connection',function(client) { console.log('亲 客户端发送过来一条信息'); client.name = i++; clientMap[client.name] = client; client.on("data",function(data) { console.log(`客户端传来${data}`) client.write('服务端发送再见') broadcast(data,client) }) }) function broadcast(data,client){ for (key in clientMap) { clientMap[key].write(client.name+"说:"+data) } } clientServer.listen(9000);
websocketClient.js
网络
var ws = new WebSocket('ws://127.0.0.1:3000'); // 初始化 ws.onopen = function(){ ws.send('你好哇') } ws.onmessage = function(event) { var chatRoom = document.getElementById('chatRoom'); chatRoom.innerHTML += '<br />' + event.data; }
websocketServer.js
socket
var WebsocketServer = require('ws').Server; var wss = new WebsocketServer({ port: 3000 }) var clientMap = new Object; var i = 0; wss.on('connection',function(client) { console.log('亲,服务端发送过来一条信息'); client.on('message',function(data) { client.name = i++; clientMap[client.name] = client; broadcast(data,client) }) }) function broadcast(data,client) { for (key in clientMap) { clientMap[key].send(client.name+'说:'+data) } }
文章持续更新中~~~~ui