第⼀种⽅式是 netSocket,主要使⽤的是 node 中的 net 模块。服务端通过 new net.createServer() 创建服务,使⽤on('connection') ⽅法建⽴连接,在回调函数中即可获取到客户端发送的信息。客户端通过 new net.Socket() 创建 Socket,通过connect 连接指定端⼝和域名后,即可调⽤ write ⽅法发送数据.

TCP服务器:

var net = require('net');  
  
var server = net.createServer(function(socket) {  
  socket.write('欢迎来到服务器!\n');  
  socket.pipe(socket);  
});  
  
server.listen(8000, '127.0.0.1');

 

这个服务器监听在本地的8000端口,当有客户端连接时,服务器会发送一条欢迎信息,然后开启一个数据流,使得服务端和客户端可以互相发送数据。

TCP客户端:

var net = require('net');  
  
var client = net.createConnection({port: 8000, host: '127.0.0.1'}, function() {  
  console.log('连接到服务器');  
  client.write('你好,服务器!\n');  
});  
  
client.on('data', function(data) {  
  console.log('从服务器接收的数据: ' + data);  
});

这个客户端连接到本地的8000端口,连接成功后向服务器发送一条消息,然后在收到服务器的响应时打印出来。

注意,这个例子只是一个基本的TCP通信例子,实际使用中可能需要对错误进行处理,并且可能需要更复杂的通信逻辑。

 

第⼆种⽅式是 webSocket,服务端引⼊第三⽅插件 ws 创建 socket 服务,客户端使⽤ H5 新增 API new WebSocket 连接服务端,通过 send ⽅法发送数据,onmessage ⽅法接收数据.

WebSocket服务端:

const WebSocket = require('ws');  
  
const wss = new WebSocket.Server({ port: 8181 });  
  
wss.on('connection', function (ws) {  
  console.log('客户端已连接');  
  
  ws.on('message', function (data, isBinary) {  
    console.log('从客户端接收到的消息:', data);  
  });  
});

 

这个WebSocket服务器监听在本地的8181端口,当有客户端连接时,服务端会打印出一条日志,然后在收到客户端发送的消息时打印出来。

WebSocket客户端:

const ws = new WebSocket('ws://localhost:8181');  
  
ws.onopen = function (e) {  
  console.log('已连接到服务器');  
  ws.send('你好,服务器!');  
};  
  
ws.onmessage = function (event) {  
  console.log('从服务器接收到的消息:', event.data);  
};

这个WebSocket客户端连接到本地的8181端口,连接成功后向服务器发送一条消息,然后在收到服务器的响应时打印出来。


第三种⽅式是 socket.io,服务端引⼊ socket.io' 模块创建服务,客户端引⼊ socket.io.js' ⽂件,建⽴连接后,客户端和服务端都是通过 on ⽅法接收数据,都是使⽤ emit ⽅法发送数据。

Socket.IO服务端:

const express = require('express');  
const http = require('http');  
const socketIo = require('socket.io');  
  
const app = express();  
const server = http.createServer(app);  
const io = socketIo(server);  
  
io.on('connection', function (socket) {  
  console.log('客户端已连接');  
  
  socket.on('message', function (data) {  
    console.log('从客户端接收到的消息:', data);  
  });  
});  
  
server.listen(3000, '127.0.0.1');

 

 

这个Socket.IO服务器监听在本地的3000端口,当有客户端连接时,服务端会打印出一条日志,然后在收到客户端发送的消息时打印出来。

Socket.IO客户端:

const socketIo = require('socket.io-client');  
  
const socket = socketIo('ws://localhost:3000');  
  
socket.on('connect', function () {  
  console.log('已连接到服务器');  
  socket.send('你好,服务器!');  
});  
  
socket.on('message', function (data) {  
  console.log('从服务器接收到的消息:', data);  
});

 

这个Socket.IO客户端连接到本地的3000端口,连接成功后向服务器发送一条消息,然后在收到服务器的响应时打印出来。

 

01-07 06:44