Rumah > pangkalan data > Redis > teks badan

Membina aplikasi pemesejan masa nyata dengan Redis dan JavaScript: cara mengendalikan sambungan pengguna

王林
Lepaskan: 2023-07-31 17:17:08
asal
817 orang telah melayarinya

Membina aplikasi komunikasi masa nyata menggunakan Redis dan JavaScript: Cara mengendalikan sambungan pengguna

Dengan perkembangan pesat Internet, permintaan untuk aplikasi komunikasi masa nyata semakin meningkat. Aplikasi komunikasi masa nyata boleh dibina dengan baik menggunakan Redis dan JavaScript untuk melaksanakan fungsi seperti penghantaran dan penerimaan mesej masa nyata, dan pengurusan pengguna dalam talian. Artikel ini akan memperkenalkan cara menggunakan Redis dan JavaScript untuk mengendalikan sambungan pengguna dan melaksanakan aplikasi komunikasi masa nyata.

  1. Pasang dan konfigurasikan Redis

Pertama, kita perlu memasang dan mengkonfigurasi pelayan Redis. Anda boleh memuat turun pakej pemasangan Redis yang sesuai untuk sistem pengendalian anda daripada tapak web rasmi Redis (https://redis.io/download), dan kemudian pasang dan konfigurasikannya mengikut dokumentasi rasmi.

  1. Cipta Fail JavaScript

Seterusnya, buat fail JavaScript untuk mengendalikan sambungan pengguna. Kami menggunakan Node.js sebagai persekitaran backend, jadi kami perlu memasang Node.js (https://nodejs.org/) terlebih dahulu.

Dalam fail JavaScript yang dibuat, mula-mula perkenalkan modul yang diperlukan:

const express = require('express');
const http = require('http');
const socketio = require('socket.io');
Salin selepas log masuk

Kemudian, buat aplikasi Express untuk mengendalikan permintaan HTTP:

const app = express();
const server = http.createServer(app);
const io = socketio(server);
Salin selepas log masuk
  1. Kendalikan sambungan pengguna

Seterusnya, kita perlu mengendalikan sambungan pengguna. Apabila pengguna menyambung ke apl, kami perlu melakukan satu siri tindakan.

Pertama, dengar acara sambungan pengguna:

io.on('connection', (socket) => {
  // 处理连接逻辑
});
Salin selepas log masuk

Kemudian, proses logik sambungan. Ini termasuk pengguna menyertai/meninggalkan acara, pemesejan dan banyak lagi. Dalam contoh ini, kami menambah fungsi bilik sembang yang mudah.

// 存储在线用户的列表
let onlineUsers = [];

// 监听用户加入事件
socket.on('join', (user) => {
  onlineUsers.push(user);
  io.emit('userJoined', onlineUsers);
});

// 监听用户离开事件
socket.on('disconnect', () => {
  onlineUsers = onlineUsers.filter((user) => user.id !== socket.id);
  io.emit('userLeft', onlineUsers);
});

// 监听消息发送事件
socket.on('sendMessage', (message) => {
  io.emit('newMessage', message);
});
Salin selepas log masuk

Dalam kod di atas, kami mengendalikan logik sambungan dengan mendengar peristiwa yang dipancarkan oleh pengguna. Apabila pengguna menyertai, kami menambahkan mereka ke senarai pengguna dalam talian dan memberitahu semua pengguna apabila pengguna keluar, kami mengalih keluar mereka daripada senarai pengguna dalam talian dan memberitahu semua pengguna apabila pengguna menghantar mesej, kami menghantar mesej kepada semua pengguna; .

  1. Gunakan Redis untuk menyimpan pengguna dalam talian

Untuk memudahkan pengurusan pengguna dalam talian, kita boleh menggunakan Redis untuk menyimpan senarai pengguna dalam talian. Dalam logik sambungan, kami menyimpan senarai pengguna dalam talian dalam Redis dan menyiarkan kemas kini kepada senarai pengguna dalam talian kepada semua pengguna melalui Redis.

Mula-mula, pasang modul Redis:

npm install redis
Salin selepas log masuk

Kemudian, tambahkan kod sambungan Redis pada permulaan logik sambungan:

const redis = require('redis');
const client = redis.createClient();

client.on('error', (err) => {
  console.error(err);
});

// 连接Redis服务器后执行的操作
client.on('connect', () => {
  // 从Redis中获取在线用户列表
  client.smembers('onlineUsers', (err, reply) => {
    if (err) throw err;
    onlineUsers = reply;
    io.emit('userJoined', onlineUsers);
  });
});

// 监听用户加入事件
socket.on('join', (user) => {
  onlineUsers.push(user);
  // 将在线用户列表保存到Redis中
  client.sadd('onlineUsers', user, (err, reply) => {
    if (err) throw err;
    io.emit('userJoined', onlineUsers);
  });
});

// 监听用户离开事件
socket.on('disconnect', () => {
  onlineUsers = onlineUsers.filter((user) => user.id !== socket.id);
  // 从Redis中删除离线用户
  client.srem('onlineUsers', socket.id, (err, reply) => {
    if (err) throw err;
    io.emit('userLeft', onlineUsers);
  });
});
Salin selepas log masuk

Dengan cara ini, kami boleh menyimpan senarai pengguna dalam talian ke Redis apabila pengguna menyertai dan keluar, dan Dapatkan senarai pengguna dalam talian melalui Redis.

  1. Menjalankan Apl

Akhir sekali, kami perlu melancarkan aplikasi. Pergi ke direktori di mana fail JavaScript terletak di terminal dan laksanakan arahan berikut:

node 文件名.js
Salin selepas log masuk

Kemudian, aplikasi akan berjalan pada pelayan tempatan. Pelayan boleh diakses dalam pelayar dan disambungkan ke pelayan melalui kod JavaScript.

Setakat ini, kami telah melaksanakan aplikasi pemesejan masa nyata yang ringkas menggunakan Redis dan JavaScript, dan memperkenalkan cara mengendalikan sambungan pengguna. Dengan cara ini, kami boleh membina aplikasi komunikasi masa nyata yang lebih kompleks dan mencapai lebih banyak fungsi. Semoga artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Membina aplikasi pemesejan masa nyata dengan Redis dan JavaScript: cara mengendalikan sambungan pengguna. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan