簡體   English   中英

信號R:如何使用XmppClient.Send方法發送復雜對象?

[英]Signal R: How to send a complex object with XmppClient.Send Method?

我一直在使用信號R發送簡單的聊天消息。 現在,我需要傳遞復雜的對象。

 chatEventHubProxy.invoke('sendGroupMessage', jsonObject, recipients, message, chatType).done(function() { self.chatEventLog('Chat message send success to ' + recipients); }).fail(function(error) { console.log('Chat message send failure reason ' + error); }) 

這是我使用過的一種解決方法。 我只是為了POC而在以下方法中使用對象。 我將其更改為各自的模型。

從客戶端到服務器,

 public void sendGroupMessage(object jsonObject, string msgTo, string msgBody, int chatCategory)
 {
      string[] recipients = msgTo.Split(',');
      foreach (string recipient in recipients)
      {
           XmppClient xmppClient = XmppClients[Context.ConnectionId];
           var msg = new Matrix.Xmpp.Client.Message(recipient, MessageType.Chat, body: msgBody, subject: jsonObject.ToString(), thread: chatCategory.ToString());
           xmppClient.Send(msg);
      }
  }

從服務器到客戶端,

private void xmppClient_OnMessage(object sender, MessageEventArgs e)
{
     DisplayEvent("OnMessage");
     var message = new Message { From = e.Message.From, Body = e.Message.Body, Subject = e.Message.Subject, ChatCategory = e.Message.Thread };
     if (e.Message.XDelay != null)
     {
         message.Stamp = e.Message.XDelay.Stamp;
     }

     if (e.Message.Body != null)
     {
          Clients.Client(Context.ConnectionId).onMessage(message);
     }
}
  1. 我知道這不是正確的方法。 這只是一個解決方法。 但這在某種程度上已經開始起作用。

  2. 我想知道是否有任何方法可以傳遞自定義對象,而不是發送新的Matrix.Xmpp.Client.Message對象作為xmppClient.Send()中的參數,或者是否有任何方法可以傳遞Matrix.Xmpp.Client中的對象。消息 (不是字符串)。

  3. 我正在循環收件人並發送群聊消息。 還有其他方法嗎? 我嘗試通過傳遞組名並將消息類型更改為GroupChat。 但是仍然沒有用。

任何幫助將不勝感激。

作為XMPP中的客戶端,您僅發送類型為或的節。XMPP協議和MatriX是可擴展的。 因此可以將任何類型的有效負載(自定義對象)和子級添加到我上面提到的頂級節類型中。

msg.Add(myCustomType)

Xml樣本:

<message to='foo@bar.com' type='chat'>
   <x xmlns='my-custom namespace'>
      <foo/>
   </x>
</message>

另請參見教程中的“ 擴展MatriX”部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM