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>

 

posted on 2020-07-22 20:48  LoaderMan  阅读(340)  评论(0编辑  收藏  举报

导航