socket.io多房间聊天

摘要:
我之前说过套接字。io最基本的方法是建立长连接。现在我们来谈谈多房间聊天。关键点在插座连接房间插座。离开当你离开房间时,它会写在服务器上。具体代码示例如下:client:1˂!

  前面说了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多房间聊天》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IIS连接oralce数据库时 提示“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”.net core使用Apollo做统一配置管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)

在制作视图背景特效时,我被各种获取坐标的方法弄糊涂了,来回复制的几篇博文也不清楚。涉及以下方法:view获取自己的坐标:getLeft()、getTop()、getRight()和getBottom()view获取自己自己的宽度和高度:getHeight(),getWidth()motionEvent获取其坐标:getX()、get Y()、Get RawX...

Delphi国内优秀网站及开源项目

它被设计为与Delphi2010或更高版本一起使用,它使用了旧版Delphi中没有的语言/RTL功能。https://github.com/VSoftTechnologies/DUnitXDelphiIDEColorizerDelphiIDEColorizer是一个插件,它可以使RADStudioIDE的工作空间https://github.com/RRUZ...

季调方法论

理论与实践“季节性调整原则季节性调整方法分析季节性调整实践中遇到的问题只有同比数据缺少春节效应阅读”通货膨胀的季节性调整和预测模型“通货膨胀预测CPI的季节性调整具有明显的春节效应考虑春节效应的季节性调节春节效应的确定CPI的季节调整基于季节性调整后CPI的预测通货膨胀的修正(应对非洲猪瘟的影响)修订并扩大了季度调查方法的CPI预测读数...

MySQL学习笔记:字符串前后补全0

遇到一个要求:如果位数小于6,则需要使用函数LPAD()和RPAD()自动完成6位。LPAD使用字符串padstr填充并完成左侧的str,直到其长度达到len个字符,并返回str。...

CUPS

杯子:一个。工具1.hal设备管理器2.系统配置打印机3.Web管理器/etc/cups/ccups。conf/etc/cups/printer conf II。打印机本地安装和客户端安装1.在本地安装Linux打印机时,应选择postscript和pcl打印机。如果没有,则应将打印机设置为原始打印模式/etc/cups/printers。有限公司...

Nacos开机自启

1.加入玉米片。服务文件vi/lib/systemd/system/nacos.service2.将以下内容写入nacos。服务文件ps:我的nacos路径是/usr/local/nacos[Unit]Description=nacosAfter=network。target[Service]Type=forkingExecStart=/usr/local/...