码迷,mamicode.com
首页 > 其他好文 > 详细

socket.io多房间聊天

时间:2016-07-03 11:49:08      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

  前面说了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);

 

socket.io多房间聊天

标签:

原文地址:http://www.cnblogs.com/wvvv/p/5636958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!