第⼀种⽅式是 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端口,连接成功后向服务器发送一条消息,然后在收到服务器的响应时打印出来。