• 基本通信 (2018/11/17)


    聊天 socket.io  全双工(发送的同时能接收消息  接收的同时能发送消息)
     
    新建一个文件夹 在cmd中安装express环境  cnpm i express --save
                             在cmd中安装socket.io的包  cnpm  i  socket.io  --save
    在node modules的文件夹里找到 socket.client 的文件夹————>readme 读说明书
     
    socket.emit      // 自己能看到,别人看不到
    socket.broadcast.emit             //自己以外的人能看到,自己看不到   (退出)
    io.emit       //群发
     
    ser.js
     
    var express = require('express');   //引入express
    var app = express();     //实例化 存入到app变量中
    app.use(express.static("public"));    //使用静态服务
    var server =  require('http').createServer(app);  //创建一个服务器,并且请求和响应是app处理
    var io = require('socket.io')(server);  //引入socket.io.并且实例化,传入server
    io.on('connection', function(socket){   //回调一个客户端的socket
        console.log("连接成功")  //连接服务器
        socket.on("msg",function(data){   //事件监听
           if(!socket.username){
               socket.username=data;
               io.emit("sys","欢迎"+data+"进入聊天室");   //socket.emit只有本人能看到,别人看不到       io.emit 群发
           }
           else{
               io.emit("sys",socket.username+"说:"+data);  //io.emit  群发
           }
        
        })
        socket.on("disconnect",()=>{//退出
            socket.broadcast.emit("sys",socket.username+"退出了。。。。");  //除了自己以外的人都能收到消息
        })
    });
    server.listen(3000);
     
    a.html
     
        <script  src="/socket.io/socket.io.js"></script>
    </head>
    <body>
        <input type="text" id="username" >
        <div id="info"></div>
        <script>
            var username =  document.getElementById("username");
            var socket =  io('http://localhost:3000'); //客户端和服务端连接
            username.onkeyup=function(e){
               if(e.keyCode===13){
                   socket.emit("msg",this.value);   //发送消息
               }
            }
            
            socket.on("sys",function(data){    //监听服务端发出的消息 将服务端发送的消息填入页面
               info.innerHTML=data+"<br  />"+info.innerHTML;
            })
        </script>
  • 相关阅读:
    Struts2使用json中要注意的几点
    JS实现关闭当前子窗口,刷新父窗口
    oracle中rownum效率低的原因以及解决办法
    URL传中文参数引发的乱码问题
    oracle存储过程
    Map.keyset() 使用详解
    oracle跨库查询dblink的用法
    Java中getResourceAsStream的用法
    如何删除存在多个重复记录中的一个
    cocos2d里面如何实现mvc系列
  • 原文地址:https://www.cnblogs.com/zsrTaki/p/11510491.html
Copyright © 2020-2023  润新知