Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Adakah ruang sembang nodejs mudah ditulis?

Adakah ruang sembang nodejs mudah ditulis?

WBOY
WBOYasal
2023-05-11 19:38:05555semak imbas

Bilik Sembang Node.js: Langkah demi Langkah

Bilik Sembang ialah aplikasi yang sangat berguna dari segi interaksi masa nyata dan pengalaman pengguna. Dalam teknologi pembangunan web moden, menggunakan Node.js boleh membina ruang sembang masa nyata yang cekap, dengan hasil yang cemerlang. Artikel ini akan menerangkan pelaksanaan ruang sembang Node.js, terokai sebab ia begitu biasa dan cara membinanya.

Kami memerlukan bahasa pengaturcaraan yang boleh digunakan oleh pelayan dan pelanggan, dalam kes ini kami menganggap Node.js. Node.js mempunyai banyak kelebihan berbanding bahasa belakang lain seperti PHP atau Java, yang paling penting ialah ia direka bentuk untuk dipacu peristiwa. Ini menjadikannya lebih baik dalam mengendalikan sejumlah besar sambungan serentak dan membolehkan pemprosesan data pantas dalam aplikasi masa nyata.

Prasyarat

Langkah pertama dalam membina ruang sembang Node.js ialah memasang Node.js dan npm (pengurus pakej Node.js). Buka terminal dan masukkan arahan berikut:

    $ sudo apt-get update
    $ sudo apt-get install nodejs
    $ sudo apt-get install npm

Kami akan menggunakan npm untuk memasang 3 modul berikut:

• socket.io: Menjadikan soket web lebih mudah digunakan.

• ekspres: untuk pembangunan aplikasi web.

• nodemon: Digunakan untuk memantau aplikasi dan memulakannya semula apabila perubahan berlaku.

Jalankan arahan berikut untuk memasangnya:

    $ sudo npm install socket.io express nodemon

Kami kini bersedia untuk mula membina bilik sembang menggunakan Node.js.

1. Cipta Pelayan Web

Langkah pertama dalam ruang sembang Node.js ialah mencipta Pelayan Web untuk mendengar pada port yang ditentukan, kita boleh melakukan ini:

    const app = require('express')();
    const server = require('http').Server(app);
    const io = require('socket.io')(server);

    app.get('/', (req, res) => {
        res.sendFile(__dirname + '/index.html');
    });

    server.listen(3000, () => {
        console.log('listening on *:3000');
    });

Kod mula-mula menggunakan modul express untuk mencipta pelayan HTTP, kemudian menggunakan modul socket.io untuk mencipta pelayan soket web, dan akhirnya meminta pelayan mendengar pada port 3000 untuk dijalankan pada penyemak imbas. Kaedah app.get() digunakan untuk memaparkan fail index.html dalam penyemak imbas.

2. Buka sambungan pada klien

Pelayar bersambung ke soket Web pada pelayan, selepas dua langkah:

a

Tambahkan dua baris kod berikut dalam fail HTML untuk boleh merujuk socket.io-client:

    <script src="/socket.io/socket.io.js"></script>
    <script src="/main.js"></script>

b Buka sambungan pada klien

Buka sambungan WebSocket , Supaya pelanggan boleh menyambung ke soket pada pelayan. Kodnya adalah seperti berikut:

    const socket = io();

Kami akan menyambung ke pelayan Node.js dan mengembalikan WebSocket yang belum dimuktamadkan supaya kami boleh mula menghantar dan menerima mesej melalui soket.

  1. Melaksanakan penghantaran mesej ke bilik tertentu

Kini pelayan kami bersedia untuk menerima sambungan antara terminal. Seterusnya, kita akan melihat cara menghantar mesej ke sambungan bilik tertentu. Dalam kod

    socket.on('join', (room) => {
        socket.join(room);
    });

    socket.on('message', (msg, room) => {
        socket.to(room).emit('message', msg);
    });

, kami menggunakan kaedah .join() soket pada pelayan untuk menyertai bilik yang ditentukan. Pelayan akan melakukan ini apabila pelanggan menghantar mesej 'join'. Pelayan kemudiannya menyiarkan mesej kepada semua pengguna dalam bilik sasaran menggunakan kaedah .to().

Ini boleh dilakukan dengan arahan berikut untuk menghantar mesej:

    socket.emit('message', 'Hello World', 'room1');
  1. Sembang Kumpulan

Langkah seterusnya ialah menambah sembang kumpulan ke pelayan. Cara kami mencapainya ialah:

    const users = {};

    socket.on('new-connection', () => {
        users[socket.id] = { name: `User ${Math.floor(Math.random() * 1000)}` };
        socket.broadcast.emit('user-connected', users[socket.id]);
    });

    socket.on('chat-message', (msg) => {
        socket.broadcast.emit('chat-message', { message: msg, name: users[socket.id].name });
    });

    socket.on('disconnect', () => {
        socket.broadcast.emit('user-disconnected', users[socket.id]);
        delete users[socket.id];
    });

Mula-mula, kami mencipta pembolehubah yang dipanggil "pengguna" yang akan menyimpan setiap pengguna yang disambungkan ke pelayan. Apabila pengguna menyambung ke pelayan, objek yang sepadan dengannya disimpan dalam pembolehubah "pengguna" dan mesej "bersambung pengguna" disiarkan kepada semua pengguna lain, yang menyampaikan pembolehubah "pengguna" dengan pengguna baharu.

Apabila pengguna menghantar mesej ke pelayan, mesej ini disiarkan kepada semua pengguna lain, termasuk pengirim asal. Apabila pengguna memutuskan sambungan, acara "diputuskan pengguna" disiarkan dan pengguna yang sepadan dipadamkan daripada pembolehubah "pengguna".

Kami kini bersedia untuk menggunakan ruang sembang Node.js. Kami boleh melihat ruang sembang dalam penyemak imbas tempatan kami dengan menjalankan arahan berikut:

    $ nodemon index.js

Kesimpulan

Dalam artikel ini, kami telah mempelajari cara membuat sembang langsung menggunakan Node.js dan soket. apl io. Kami bermula dengan mencipta pelayan web dan kemudian melihat cara membuka sambungan pada klien dan menghantar mesej ke bilik tertentu. Kami telah menambah ciri sembang kumpulan yang membenarkan semua pengguna yang disambungkan ke pelayan menghantar mesej antara satu sama lain.

Node.js menyediakan alatan dan perpustakaan yang sangat baik yang memudahkan untuk melaksanakan fungsi web masa nyata antara pelanggan dan pelayan. Selain itu, socket.io menyediakan ciri yang memudahkan pengendalian. Kami berharap artikel ini membantu anda mula membuat aplikasi sembang dengan Node.js!

Atas ialah kandungan terperinci Adakah ruang sembang nodejs mudah ditulis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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