socket.io多房間聊天

  前面說了socket.io最基本的創建長鏈接,如今簡單說一下多房間聊天。javascript

  關鍵點在html

  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);
相關文章
相關標籤/搜索