Day25:复数聊天室

铁人赛写到後面,似乎有种越来越难施力的困窘,果然要完整写完系列笔记,除了需要先列好大纲外,还需要提前准备笔记内容,如果当天再来处理,几乎是各种卡壳,也算是一种教训加经验了。

这篇就简单记录一下,如何透过变数去产生复数聊天室。

HTML

在玩家输入的页面处,需要添加一个栏位,让玩家能输入频道名称,作为变数传给 server。

<p>
  Username :
  <input v-model="username" type="text" />
</p>
<p>
  Channel :
  <input v-model="channelId" type="text" />
</p>

channelId 这个变数除了要透过 v-model 绑定外,同时也向後传递。

data: {
    // ...
    channelId: 'Public',
},
  this.ws.send(
    JSON.stringify({
      event: 'login',
      message: this.username,
      channelId: this.channelId,
    })
  );

Server

server 每一次监听时,将 channelId 存到 ws。每当要送出讯息时,除了检查是否维持连线外,也检查频道 ID 是否相符,都符合的前提下才做送出讯息。

wss.clients.forEach((client) => {
  if (
    client.readyState === WebSocket.OPEN &&
    client.channelId === ws.channelId
  ) {
    client.send(JSON.stringify(formData));
  }
});

<<:  27 | 【区块组合套件介绍】Stackable

>>:  [第二十七天]从0开始的UnityAR手机游戏开发-虚拟摇杆 Joystick 01

【day10】狗一下居酒食堂

今天来介绍很难预约的狗一下居酒食堂 这是去年12月底去吃的 并提前一个月预定 当天的方案是88道菜吃...

分享 : SpyGlass CDC 流程深入理解

SpyGlass CDC 流程深入理解(一) 版权声明: 本文作者: 烓围玮未 首发于知乎专栏:芯片...

电子书阅读器上的浏览器 [Day18] 支援夜间模式

夜间模式在电子书阅读器上通常效果不会很好,黑色的底色会造成很多残影。不过,因为我也会在一般手机上使用...

[ Day 30 | CSS ] 用 clip-path 绘制多边形

之前一直很好奇有些网站的背景图片是如何裁切成不同形状的, 除了本来就放置裁切好的图片以外不知道还有没...

RISC-V: R-type 位移指令

今天一样是简单的 SLL、SRL、SRA 指令实作, 再一样为了 Code Stream Logge...