• HTML5


    应用:node.js

    主要步骤

    • 创建文件夹
    • 创建server.js(服务入口,server为自定义文件的命名)
    • npm init -y (快速创建一个package.json文件
    • 依赖包安装:nodejs-websocket (github安装讲解)
      • npm i nodejs-websocket
    • 依赖包在appjs中的使用 (github how to use讲解)

    https://github.com/sitegui/nodejs-websocket#how-to-use-it

     

    配置完毕后启动

    命令行输入>   node server.js (server这个名字不固定具体看你的文件名叫啥

    服务端server.js 源码如下:

     1 const ws = require('nodejs-websocket');//引入依赖包
     2   const POST = 8080;//定义端口
     3 // 创建一个server
     4   const server = ws.createServer(connect => {
     5     //每次只要有新的用户加入,就会为当前用户创建一个connect对象,同时调用一下这个回调函数。
     6     console.log("New connection");
     7     
     8     // text事件:接收用户请求,得到用户传输进来的数据。
     9     connect.on("text", data => {
    10       // 每当接受到用户请求事件,这个回调函数就会被触发。
    11       console.log("Received "+data);
    12       
    13       // sendText/send 方法:接受到请求后,响应一个数据给用户。因为是connect调用,所以只给当前connet对应的用户发送,如果需要给所有用户发送(广播),需要connections这个数组
    14       connect.sendText(data.toUpperCase()+"!!!");//如果直接返回一个data,就会像echo那个服务器一样的功能,接收到什么就返回什么
    15     });
    16     
    17     // 连接断开 触发close事件
    18     connect.on("close", (code, reason) => {
    19       console.log("connection closed");
    20       code && console.log(code);
    21       reason && console.log(reason);
    22     });
    23     
    24     // error:监听服务异常事件,放置因报错而断掉整个服务。
    25     connect.on('error', ()=>{
    26       // 如果触发了close事件,就会走error异常事件(刷新也会),所以必须加error
    27       console.log('连接出现异常');
    28     });
    29   });
    30 server.listen(POST, ()=>{
    31     console.log('webSocket服务启动成功了,监听了端口'+ POST);
    32 });

    客户端demo使用上述配置的服务器。 源码如下:

    示例页面代码html:

    1   <div class="demo">
    2     <input type="text" placeholder="请输入要发送的内容" id="ipt">
    3     <button id="btn">发送请求</button>
    4     <p>
    5       响应结果如下:
    6     </p>
    7     <div id="rst"></div>
    8     <button id="closeBtn">断开连接</button>
    9   </div>

    示例页面代码js:

     1 // var websocket = new WebSocket('ws://echo.websocket.org');// 使用ws官方提供的服务器
     2 var websocket = new WebSocket('ws://localhost:8080'); // 使用我自己配置的服务器,前提要去websocketServer文件夹中把服务启动一下:node server.js
     3 websocket.addEventListener('open', function (e) {
     4     console.log(e, websocket.readyState);
     5     // websocket.send('发送一个方法')
     6     // websocket.send('xing.org1^')
     7     btn.onclick = function (a) {
     8       // console.log(a)
     9       websocket.send(ipt.value);
    10     }
    11   });
    12 // 接收返回值:
    13   websocket.addEventListener('message', (e) => {
    14     console.log(e);
    15     rst.innerHTML = e.data;
    16   });
    17 closeBtn.onclick = function (e) {
    18     console.log(e);
    19     websocket.close(3000,'主动请求断开连接吧');//断开连接
    20   }
    21   websocket.addEventListener('close', function (e) {
    22     console.log('连接断开了', e);
    23   }); 

    connections实现聊天室广播:

    即给所有的用户(server.connections)都发送消息(sendText):

    function broadcast(server, msg) {// 广播函数
    
      server.connections.forEach(function (conn) {
        conn.sendText(msg)
    
      })
    
    }

    具体实现方案,见下篇:《websocket的应用 - 实现一个简易的聊天室效果。》

  • 相关阅读:
    动态规划(DP),模拟
    递推,动态规划(DP),字符串处理,最佳加法表达式
    递归,动态规划,找最短路径,Help Jimmy
    动规,模拟,递推,最长公共子序列
    递归,递推,记忆化搜索,空间优化(数字三角形)
    递归,记忆化搜索,(棋盘分割)
    递归,搜索,回溯,最优路径(线段)
    web前端开发初学者必看的学习路线(附思维导图)
    一位资深程序员大牛给予Java初学者的学习路线建议
    假如时光倒流,我会这么学习Java
  • 原文地址:https://www.cnblogs.com/padding1015/p/10987185.html
Copyright © 2020-2023  润新知