socket.io多房間聊天


  前面說了socket.io最基本的建立長連接,現在簡單說一下多房間聊天。

  關鍵點在

  socket.join(roomid)加入一個房間
  socket.leave(roomid);離開一個房間
都是寫在服務器上,具體代碼示例如下:
客戶端:
 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>socket.io</title>
 6     <script type="text/javascript" src="/socket.io/socket.io.js"></script>
 7 </head>
 8 <body>
 9 <h1>socket.io的多房間</h1>
10 <input type="button" value="加入房間" onclick="join()"><br>
11 <input type="button" value="離開房間" onclick="leave()"><br>
12 </body>
13 </html>
14 
15 <script type="text/javascript">
16 
17     //和服務器建立長連接
18     var socket = io.connect('/');
19 
20     var name = 'tony';
21 
22     //向服務器端發送自定義消息
23     function join(){
24         socket.emit('join', name);
25     }
26 
27     function leave(){
28         socket.emit('leave', name);
29     }
30 
31     //收到有新的人加入房間的信息
32     socket.on('system', function(data){
33         alert(data)
34     });
35     //收到我離開的信息
36     socket.on('leavehint', function(data){
37         alert(data)
38     });
39 
40 
41     //和服務器建立長連接
42     //socket.on('connect', function(){});
43 </script>

服務器:

 1 //初始化系統庫(引包)
 2 var express = require('express');
 3 var app = express();
 4 var server = require('http').createServer(application);
 5 //引入socket.io這個包
 6 var socketio     = require('socket.io')(server);
 7 var path = require("path");
 8 //加載前端文件index.html
 9 
10 //設置靜態路徑
11 app.use(express.static(path.join(__dirname, "views")));
12 app.get('/joinRoom', function(request, response){
13     response.sendFile('./views/joinRoom.html');
14 });
15 
16 //監聽用戶連接事件
17 socketio.on('connection', function(socket){
18     //設置房間id(id自己設置,根據具體情況而定)
19     var roomid = 'room_1';
20 
21     //將用戶加入房間
22     socket.on('join', function(data){
23         //用戶加入房間
24         socket.join(roomid);
25         //對房間內的用戶發送消息
26         socketio.sockets.in(roomid).emit('system','hello,'+data+'加入了房間');//包括自己
27         //socket.broadcast.to(roomid).emit('event_name', data);//不包括自己
28     });
29 
30     socket.on('leave', function(data){
31         //用戶離開房間
32         socket.leave(roomid);
33         //向此用戶發送信息
34         socket.emit('leavehint','you are leave!')
35     });
36 
37 });
38 server.listen(9004);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM