Tutorial 5 - Direct Message
最終更新
役に立ちましたか?
役に立ちましたか?
private const string HOST = "127.0.0.1:7000";
private const string CLIENT_KEY = "";
private const string UID = ""; // 空文字の場合はランダム生成DiarkisInterface diarkis = DiarkisNetworkManager.GetDiarkisInterface(INTERFACE_NAME);
DiarkisEventHandler handler = diarkis.EventHandler;
handler.OnUDPConnect(OnConnect, this);
handler.OnUDPDisconnect(OnDisconnect, this);
handler.OnUDPFail(_ => SetNetworkState("接続失敗", ColorRed), this);
handler.OnHttpError(_ => SetNetworkState("HTTP 認証エラー", ColorRed), this);
handler.OnDMMessage(OnMessageReceived, this);
handler.OnDMMessageResponse(_ => { /* 配信確認:省略可 */ }, this);private void OnSendClicked(string message)
{
string targetUID = _targetUIDInput.text.Trim();
if (string.IsNullOrEmpty(targetUID)) return;
byte[] bytes = Encoding.UTF8.GetBytes(message);
DiarkisNetworkManager.GetDiarkisInterface(INTERFACE_NAME).DirectMessage.Send(targetUID, bytes);
// DM は送信者自身には届かないため、ローカルに表示する
AddChatLine($"[自分 → {targetUID}] {message}");
}private void OnMessageReceived(DiarkisDirectMessageEventArgs e)
{
string senderID = e.GetSenderID();
DiarkisByteVector payload = e.GetPayload();
if (payload == null || payload.Count == 0) return;
byte[] bytes = new byte[payload.Count];
for (int i = 0; i < payload.Count; i++)
bytes[i] = payload[i];
string message = Encoding.UTF8.GetString(bytes);
AddChatLine($"[{senderID}] {message}");
}handler.OnDMMessageResponse(_ => {
// Diarkis サーバーがメッセージを受信したことの確認
}, this);