Rumah  >  Artikel  >  hujung hadapan web  >  Berkongsi fungsi bilik sembang ringkas yang dilaksanakan dalam nodejs_node.js

Berkongsi fungsi bilik sembang ringkas yang dilaksanakan dalam nodejs_node.js

WBOY
WBOYasal
2016-05-16 16:28:461440semak imbas

Hari ini saya akan melaksanakan ruang sembang ringkas, menggunakan nodejs di latar belakang dan socket.io untuk berkomunikasi antara pelanggan dan pelayan Ini adalah rangka kerja websocket yang agak matang.

Kerja awal

1. Pasang ekspres dan gunakannya untuk mengehoskan halaman socket.io dan statik 2. Pasang socket.io, perintah npm install socket.io --save.

Tulis kod pelayan

Mula-mula kami mengehoskan tapak web melalui ekspres dan melampirkannya pada contoh socket.io, kerana socket.io memerlukan protokol http untuk sambungan awal


Salin kod Kod adalah seperti berikut:
var express = memerlukan('express'),
io = memerlukan('socket.io');
apl var = ekspres();

app.use(express.static(__dirname));

var pelayan = app.listen(8888);

var ws = io.listen(server);

Tambah acara sambungan pelayan Apabila sambungan pelanggan berjaya, pengumuman akan dihantar kepada semua pengguna dalam talian Apabila pengguna menghantar mesej, siaran akan dihantar untuk memberitahu pengguna lain

ws.on('sambungan', fungsi(klien){
console.log(' Client.on('join', function(msg){
             // Semak sama ada terdapat pendua
If(checkNickname(msg)){
                client.emit('nama panggilan', 'Nama panggilan pendua!');
         }lain{
Client.nickname = msg;
                 ws.sockets.emit('pengumuman', 'Sistem', msg 'Menyertai bilik sembang!');
}
});
// Dengar untuk menghantar mesej
Client.on('send.message', function(msg){
Client.broadcast.emit('send.message',client.nickname, msg);
});
// Beritahu pengguna lain apabila memutuskan sambungan
Client.on('disconnect', function(){
Jika(nama panggilan pelanggan){
Client.broadcast.emit('send.message','System', client.nickname 'Tinggalkan bilik sembang!');
}
})

})


Memandangkan pelanggan dikenal pasti dengan nama panggilan, pelayan memerlukan fungsi untuk mengesan nama panggilan pendua

Salin kod Kod adalah seperti berikut: // Semak sama ada nama panggilan diulang
var checkNama panggilan = fungsi(nama){
untuk(var k dalam ws.sockets.sockets){
Jika(ws.sockets.sockets.hasOwnProperty(k)){
If(ws.sockets.sockets[k] && ws.sockets.sockets[k].nama panggilan == nama){
                    kembali benar;
            }
}
}
Kembalikan palsu;
}



Tulis kod pelanggan

Memandangkan pelayan menggunakan rangka kerja websokcet pihak ketiga, halaman hujung hadapan perlu merujuk kod klien socket.io secara berasingan Fail sumber boleh didapati dalam modul socket.io Laluan di bawah Windows ialah node_modulessocket. ionode_modulessocket.io-clientdist Berikut ialah Untuk pembangunan dan versi termampat, hanya sebut versi pembangunan secara lalai.

Hujung hadapan terutamanya mengendalikan semakan nama panggilan input dan pemprosesan mesej Kod lengkap adalah seperti berikut:

Salin kod Kod adalah seperti berikut:




    socket.io 聊天室例子