w279471172 2024-04-22 09:58 采纳率: 18.8%
浏览 2
已结题

WebSocket的问题


 
const server = https.createServer(options);
const wss = new WebSocket.Server({ server });
 
wss.on('connection', (ws) => {

let ins=ws
   
console.log(ins)
 //如何把ws里的有用信息保存  方式随时send通讯
//我只想把ws有用的内容存进变量  随刻可以  ins.send(),和客户端通讯

 ins.send(‘o’);

//ins 这个变量的内容太多了  十几KB  一共也存不了多少内容  所以我想只保存WS里有用的 可以通讯的内容

});
 
server.listen(8080, () => {
  console.log('WebSocket服务器正在监听8080端口');
});
  • 写回答

8条回答 默认 最新

  • GISer Liu 2024-04-22 10:06
    关注

    该回答引用自GPT-4,由博主GISer Liu编写:

    问题分析:
    根据描述,你想要在 WebSocket 服务器端保存有用的 WebSocket 对象信息,以便随时可以发送消息给客户端。由于 WebSocket
    对象可能包含大量信息,但你只需要其中用于通讯的部分,因此需要筛选出有用的内容保存。
    解决方案:

    1. 筛选有用信息:connection 事件中,你可以筛选出需要的信息,比如 WebSocket 对象中的 ID、地址等,以及必要的通讯方法,比如 send() 方法。
    2. 保存有用信息:将筛选出的有用信息保存到一个对象中,以备随时使用。可以使用一个对象来存储多个 WebSocket 连接的有用信息,以便在处理多个连接时能够轻松管理。
    3. 发送消息给客户端:当需要向客户端发送消息时,可以通过保存的 WebSocket 对象直接调用其 send() 方法进行通讯。
      下面是一个示例代码,演示了如何实现上述解决方案:
      javascriptCopy code
      const https = require('https');
      const WebSocket = require('ws');
      const options = {}; // 根据实际情况配置 HTTPS 服务器的选项
      const server = https.createServer(options);
      const wss = new WebSocket.Server({ server });
      // 用于保存有用信息的对象
      const usefulInfo = {};
      wss.on('connection', (ws) => {
      // 筛选有用信息
      const usefulData = {
      id: generateUniqueId(), // 生成唯一 ID
      address: ws._socket.remoteAddress, // 获取客户端地址
      send: ws.send.bind(ws) // 绑定 send 方法
      };
      // 保存有用信息
      usefulInfo[usefulData.id] = usefulData;
      // 示例输出有用信息
      console.log('Useful info:', usefulData);
      // 发送消息给客户端
      usefulData.send('Hello from server!');
      // 示例发送
      usefulData.send('o');
      // 如需在此处处理客户端发送的消息,可以监听 'message' 事件
      // ws.on('message', (message) => { ... });
      });
      server.listen(8080, () => {
      console.log('WebSocket 服务器正在监听8080端口');
      });
      // 生成唯一 ID 的函数,可以根据实际需求更改
      function generateUniqueId() {
      return Math.random().toString(36).substr(2, 9);
      }
      
      这段代码实现了以下功能:
    • connection 事件中,筛选并保存了有用的 WebSocket 对象信息。
    • 示例输出了有用的信息,并向客户端发送了一条消息。
    • 使用了一个对象 usefulInfo 来保存所有 WebSocket 连接的有用信息。
    • 提供了一个生成唯一 ID 的函数 generateUniqueId(),以确保每个连接都有一个唯一的标识符。
      你可以根据实际情况对代码进行调整,比如修改生成唯一 ID 的方式、调整筛选的信息等。

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 已采纳回答 4月22日
  • 创建了问题 4月22日