Xizmatlar Tovarlar Maqolalar

Rust va Axum frameworkdan foydalangan holda "Real-time Chat" serveri

Dasturiy ta'minot yechimlari
← Barcha maqolalar

Rust va Axum frameworkdan foydalangan holda "Real-time Chat" serveri

16.02.2026
Rust va Axum frameworkdan foydalangan holda "Real-time Chat" serveri

Sizning Rust va Axum frameworkiga qiziqishingizni inobatga olgan holda, WebSocket texnologiyasi asosida ishlaydigan oddiy "Real-time Chat" serverini Rust tilida yozib beraman.

Bu misol messenger backendining eng asosiy qismi — server va mijoz o‘rtasida uzluksiz aloqa (persistent connection) qanday ishlashini ko‘rsatib beradi.

Loyiha strukturasi

Bizga 3 ta narsa kerak bo‘ladi:

  1. Cargo.toml — Kutubxonalar.

  2. main.rs — Backend (Rust + Axum).

  3. index.html — Frontend (Oddiy HTML + JS).


1-qadam: Loyihani yaratish va kutubxonalar

Terminalda yangi loyiha oching:

Bash

cargo 

Cargo.toml fayliga quyidagi qatorlarni qo‘shing. Bu yerda biz Axum (web framework), Tokio (asinxron ishlash uchun) va Tower (fayllarni uzatish uchun) ishlatamiz.

Ini, TOML

[package]
name = 

2-qadam: Backend kodi (src/main.rs)

Bu kod WebSocket ulanishini qabul qiladi va kelgan xabarni barcha ulangan foydalanuvchilarga "Broadcast" qiladi (tarqatadi).

Rust

use

3-qadam: Frontend (index.html)

Loyiha papkasining o‘zida (src ichida emas, Cargo.toml yonida) index.html faylini yarating:

HTML

<!DOCTYPE 

Ishga tushirish

  1. Terminalda: cargo run

  2. Brauzerni ochib: http://localhost:3000 manziliga kiring.

  3. Sinash uchun: Brauzerda ikki yoki uchta alohida tab (oyna) oching va har biridan yozib ko‘ring. Biri yozganda, boshqalarida darhol paydo bo‘lishi kerak.

Bu kodda nima sodir bo'ldi?

  1. Axum Router: /ws manziliga kelgan HTTP so'rovni WebSocket protokoliga "Upgrade" (yangilash) qildi.

  2. Tokio Broadcast: Bu xotiradagi "mini-Redis" kabi ishladi. tx.send(msg) qilinganda, u xabarni barcha ulangan rx (tinglovchi)larga tarqatdi.

  3. Concurrency: Rust har bir foydalanuvchi uchun juda yengil tokio task (yashil oqim) yaratdi. Bu 10,000 odam ulansa ham serverni qotirmaydi.

Haqiqiy katta loyihada (Production) broadcast::channel o‘rniga Redis Pub/Sub ishlatiladi, shunda bir nechta serverlar o‘zaro xabar almasha oladi.

© 2026 Musbat. Barcha huquqlar himoyalangan.