Diarkis Room の Announce を使う

Announce() の使い方

room.Announce() を使うと、Room の他のメンバーにメッセージを送ることができます。ブロードキャストとメッセージの違いは、メッセージを送るために送信者のクライアントが Room のメンバーである必要がないことです。

メッセージを送信するために Room のメンバーであることを必要としないことは、柔軟で便利な場合もありますが、予期せぬセキュリティホールを作ってしまう可能性があります。

例えば任意のクライアントに Announce() へのアクセスを許可した場合、クライアントは対象となる Room ID を知っていれば、どの Room にもメッセージを送ることができ、このことを悪用される可能性があります。

クライアントからの悪用を防ぐために、Announce() を呼び出す制御ロジックを用意することは非常に重要です。

以下の例では、Announce() をイベントのコールバックで使用しています。クライアントがAnnounce() に直接アクセスしないようにすることで、潜在的なセキュリティリスクを防ぐことができます。

// SetOnAnnounce is raised when Broadcast, Message, Announce are invoked
room.SetOnAnnounce(func(roomID string, ver uint8, cmd uint16, msg []byte) {
// We capture the message sent to the room and send it outside such as CDN etc.
data := CreateCDNData(roomID, ver, cmd, msg)
SendCDN(data)
})