- ヘルプセンター
- Diarkis サーバ
- Room
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)
})