zoukankan      html  css  js  c++  java
  • express_socket 多房间聊天

    app.js

    var express=require('express');
    
    var url=require('url');
    
    var app=express();
    
    var server = require('http').Server(app);
    var io = require('socket.io')(server);
    
    app.set('view engine','ejs');
    app.use(express.static('public'));
    
    app.get('/',function(req,res){
        //res.send('首页');
        res.render('index');
    })
    
    
    app.get('/news',function(req,res){
        res.send('news');
    
    })
    
    server.listen(8000,'192.168.0.3');   /*改ip*/
    
    
    
    //写socket.io的服务
    
    io.on('connection', function (socket) {
    
        console.log('socket配置成功')
    
        //io.emit  广播
        //socket.emit  谁给我发的信息我回返回给谁
    
        //获取客户端建立连接的时候传入的值
        //console.log(socket.request.url);
       var roomid=url.parse(socket.request.url,true).query.roomid;   /*获取房间号/ 获取桌号*/
    
       //console.log(roomid);
    
        socket.join(roomid);  /*加入房间/加入分组*/
    
        socket.on('addCart',function(data){
    
            //console.log(data)
    
            //广播给指定桌号的用户        对房间(分组)内的用户发送消息
            //io.to(roomid).emit('addCart','Server AddCart Ok'); //通知分组内的所有用户
    
            socket.broadcast.to(roomid).emit('addCart','Server AddCart Ok'); //通知分组内的用户不包括自己
    
        })
    
    
    });
    
    
    
    
    /*1.安装
     npm install socket.io
    
    
     2、复制下面代码
    
     var server = require('http').Server(app);
     var io = require('socket.io')(server);
    
     3、app.listen改成
    
        server.listen(8000,'192.168.0.3');
    
    
    4、配置socket
    
     io.on('connection', function (socket) {
    
         console.log('socket配置成功')
     });
    
    
     5、在客户端引入socket.io  建立连接
    
     var socket = io.connect('http://192.168.0.3:8000');
    
    
    
    6、
    
    io.emit  广播
    socket.emit  谁给我发的信息我回返回给谁
    
    socket.join(roomid);   加入分组
    
    io.to(roomid).emit('addCart','Server AddCart Ok')  通知分组内的所有用户
    
    socket.broadcast.to(roomid).emit('addCart','Server AddCart Ok');  通知分组内的用户不包括自己
    
    
     */

    index.ejs

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <title></title>
    
        <script src="/jquery-1.11.3.min.js"></script>
    
        <script src="http://192.168.0.3:8000/socket.io/socket.io.js"></script>
    </head>
    <body>
    
    
    
        <button id="send">加入购物车</button>
    
    </body>
    </html>
    
    <script>
    
    
        $(function(){
    
            var socket = io.connect('http://192.168.0.3:8000/');
    
            //群聊功能--聊天室
            $('#send').click(function(){
                var msg=$('#msg').val();
    
                socket.emit('message',msg);  /*客户端给服务器发送数据*/
    
            })
            //接受服务器返回的数据
            socket.on('servermessage',function(data){
    
                console.log(data)
            })
    
        })
    </script>

    user1.html

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>socket.io</title>
        <script src="http://192.168.0.3:8000/socket.io/socket.io.js"></script>
    </head>
    <body>
    <h1>socket.io的多房间1111</h1>
    <input type="button" value="加入购物车" onclick="addCart()"><br>
    
    
    </body>
    </html>
    
    <script type="text/javascript">
    
        //和服务器建立长连接
        var socket = io.connect('http://192.168.0.3:8000?roomid=1');
    
        //接收服务器返回的信息
        socket.on('addCart',function(data){
    
            console.log(data);
        });
    
        function addCart(){
            socket.emit('addCart','addCart');
        }
    
    </script>

    user2.html

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>socket.io</title>
        <script src="http://192.168.0.3:8000/socket.io/socket.io.js"></script>
    </head>
    <body>
    <h1>socket.io的多房间222</h1>
    <input type="button" value="加入购物车" onclick="addCart()"><br>
    
    
    </body>
    </html>
    
    <script type="text/javascript">
    
        //和服务器建立长连接
        var socket = io.connect('http://192.168.0.3:8000?roomid=2');
    
        //接收服务器返回的信息
        socket.on('addCart',function(data){
    
            console.log(data);
        });
    
        function addCart(){
            socket.emit('addCart','addCart');
        }
    
    </script>
  • 相关阅读:
    切换node版本
    vue 移动端组件
    vue 单元测试
    git
    每日日报
    每日日报
    每日日报
    01人月神话阅读笔记之三
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/loaderman/p/11582749.html
Copyright © 2011-2022 走看看