返回
技术小能手教你学计算机网络实战:简易IM后台demo (websocket)
后端
2024-01-11 05:54:18
前言
虽然已经学习过计算机网络的理论课程,也做过相关的搭网实验,但是感觉缺乏更进一步的实践,导致很多理论知识都流于表面,并且正在随着时间流逝而快速被遗忘。最近几天刚好有空,打算抽出时间来学习如何从0开始构建一个简单的IM系统。
IM系统简介
IM系统(Instant Messaging System),即时通讯系统,是一种允许用户通过网络实时发送和接收文本、图片、语音、视频等消息的系统。IM系统通常由客户端和服务器两部分组成,客户端负责发送和接收消息,服务器负责存储和转发消息。
WebSocket简介
WebSocket是一种双向通信协议,允许客户端和服务器之间建立一个持久的连接。WebSocket与HTTP协议类似,都是基于TCP协议,但WebSocket协议增加了对双向通信的支持,并且支持二进制数据传输。
Node.js简介
Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它允许开发者使用JavaScript来编写服务器端程序。Node.js具有异步、非阻塞的特性,非常适合处理并发请求。
搭建环境
在开始编写代码之前,我们需要先搭建好开发环境。
- 安装Node.js。
- 安装websocket库。
- 创建一个新的Node.js项目。
编写代码
服务器端代码
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', (ws) => {
ws.on('message', (message) => {
console.log(`Received message: ${message}`);
ws.send(`Echo: ${message}`);
});
});
客户端代码
const WebSocket = require('ws');
const ws = new WebSocket('ws://localhost:8080');
ws.on('open', () => {
console.log('Connected to the server');
ws.send('Hello from the client');
});
ws.on('message', (message) => {
console.log(`Received message from the server: ${message}`);
});
运行程序
服务器端
node server.js
客户端
node client.js
测试
- 在浏览器中打开
http://localhost:8080
。 - 在客户端控制台输入
Hello from the client
并回车。 - 在服务器端控制台可以看到
Received message: Hello from the client
。 - 在客户端控制台可以看到
Received message from the server: Echo: Hello from the client
。
总结
通过这个简单的示例,我们学习了如何使用WebSocket在服务器和客户端之间建立双向通信通道,以及如何使用Node.js来编写服务器端程序。希望这篇教程对您有所帮助。