后台接口调用websocket

技术栈(nodejs express)
目前需要写一个后台接口供别人调用(http)

后台需要与前端建立websocket双向通信

问题: 后台接口获取到调用参数后,如何通过websocket传到前端,求技术路线

你看看,可以帮到你吗?

  1. 后端nodejs添加 websocket 库

    npm install websocket
    
  2. 写后端代码,示例

    const http = require('http');
    const WebSocketServer = require('websocket').server;
    const URL = require('url').URL;
    const fs = require('fs');
    let http_server = http.createServer((req, res)=>{
     let url = new URL("http://127.0.0.1"+req.url);
     if(url.pathname == '/' || url.pathname == '/index.html' ){
         let data = fs.readFileSync('index.html');
         res.end(data);
     }else if(url.pathname == '/send'){
         let data = url.searchParams.get('data');        
         ws_server.broadcast(data);
         res.end();
     }else{        
         res.statusCode = 404;
         res.end();
     }
    });
    let ws_server = new WebSocketServer({
     httpServer: http_server    
    });
    ws_server.on('request', (req)=>{
     req.accept();
    });
    http_server.listen(8080);
    
  3. 写前端代码,示例

    <script>
    let ws = null;
    let stat = "";
    function init(){
     ws = new WebSocket('ws://127.0.0.1:8080');
     ws.onmessage = function(msg){
         console.log(msg);
         stat += ('\nrecv' + msg.data);
         view.innerHTML = stat;
     }
    }    
    function send(){
     let data = Math.floor(Math.random() * 1000)+"";    
     stat += ('\nsend' + data);
     view.innerHTML = stat;
     fetch("http://127.0.0.1:8080/send?data=" + data);
    }
    </script>
    <body onload="init()">
     <button onclick="send()">SEND</button>
     <pre id="view"></pre>
    </body>
    
  4. 浏览器打开http://127.0.0.1:8080测试

  • 这篇博客: NodeJs网络编程之搭建HTTP和WebSocket连接中的 HTTP 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • HTTP的报文可以通过下面这样获取,获取的内容主要是由三次握手、请求报文、相应内容、结束信息组成。

    curl -v http://127.0.0.1:1337
    

    运行图:
    在这里插入图片描述