JavaScript网络编程:从套接字到WebSocket

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么JavaScript用于网络编程?

曾经,JavaScript只是用于按钮动画和表单验证的语言。而今天,它已成为创建网络应用程序的强大工具。JavaScript网络编程打开了通往实时世界的大门:聊天室、在线游戏、数据流传输、监控系统,甚至是你自己的Web服务器。

在本文中,我们不会枯燥地重写文档。我们将从简单的HTTP请求一路走到完整的WebSocket连接。你将看到Node.js如何将浏览器语言转变为强大的网络引擎。准备好了吗?出发!



基础:HTTP与Node.js模块

任何JavaScript网络编程都从理解协议开始。最流行的是HTTP。在浏览器中,你使用fetch()或XMLHttpRequest,但服务器端需要不同的方法。



创建一个简单的HTTP服务器

Node.js提供了内置的http模块。以下是一个最小示例,它对任何请求都响应"你好,世界!":

const http = require('http');

const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('你好,世界!JavaScript网络编程正在运行!');});

server.listen(3000, '127.0.0.1', () => { console.log('服务器已启动,地址为 http://127.0.0.1:3000/');});

通过node server.js运行这段代码,然后打开浏览器。你会看到我们的消息。很简单,对吧?但这只是开始。真正的魔法在我们处理套接字时才会显现。



在JavaScript中处理TCP套接字

HTTP是构建在TCP之上的应用层协议。如果你需要完全控制数据传输,请使用JavaScript套接字。在Node.js中,这由net模块负责。



TCP服务器:接收数据

想象你在编写一个简单的回声服务器。客户端连接,发送消息,服务器将其返回。如下所示:

const net = require('net');

const server = net.createServer((socket) => { console.log('客户端已连接');

socket.on('data', (data) => {

现在为这个服务器编写一个客户端。JavaScript客户端-服务器是双向通信:

const net = require('net');

const client = net.createConnection({ port: 8080 }, () => { console.log('已连接到服务器'); client.write('你好,服务器!');});

client.on('data', (data) => { console.log('服务器响应:', data.toString()); client.end();});

client.on('end', () => { console.log('已从服务器断开连接');});

先运行服务器,再运行客户端。你会看到数据来回传输。这是所有JavaScript网络协议的基础。



WebSocket:无延迟的实时通信

HTTP和TCP很好,但它们有一个问题:要获取新数据,客户端必须不断发送请求(轮询)。这效率不高。JavaScript中的WebSocket解决了这个问题——一旦建立连接,服务器可以随时发送数据。



Node.js上的WebSocket(ws库)

安装库:npm install ws

服务器:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8081 });

wss.on('connection', (ws) => { console.log('WebSocket客户端已连接');

ws.on('message', (message) => { console.log('收到:',

博客

书籍推荐