Signalr:如何使用 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);
}
}
我知道这不是正确的做法。这只是一种解决方法。但这在某种程度上目前正在发挥作用。
我想知道是否有任何方法可以传递自定义对象而不是发送新的 Matrix.Xmpp.Client.Message 对象作为 [=36 中的参数=]xmppClient.Send() 或者有什么方法可以在 Matrix.Xmpp.Client.Message 中传递对象(不是字符串)。
我正在循环收件人并发送群聊消息。还有其他办法吗?我尝试通过传递组名并将消息类型更改为 GroupChat。但是还是不行。
如有任何帮助,我们将不胜感激。
作为 XMPP 中的客户端,您仅发送类型为或的节
XMPP 协议和 MatriX 是可扩展的。因此可以将任何类型的有效负载(自定义对象)和子项添加到我上面提到的顶级节类型。
msg.Add(myCustomType)
Xml样本:
<message to='foo@bar.com' type='chat'>
<x xmlns='my-custom namespace'>
<foo/>
</x>
</message>
另请参阅教程中的扩展 MatriX 部分。
我一直在使用信号 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);
}
}
我知道这不是正确的做法。这只是一种解决方法。但这在某种程度上目前正在发挥作用。
我想知道是否有任何方法可以传递自定义对象而不是发送新的 Matrix.Xmpp.Client.Message 对象作为 [=36 中的参数=]xmppClient.Send() 或者有什么方法可以在 Matrix.Xmpp.Client.Message 中传递对象(不是字符串)。
我正在循环收件人并发送群聊消息。还有其他办法吗?我尝试通过传递组名并将消息类型更改为 GroupChat。但是还是不行。
如有任何帮助,我们将不胜感激。
作为 XMPP 中的客户端,您仅发送类型为或的节 XMPP 协议和 MatriX 是可扩展的。因此可以将任何类型的有效负载(自定义对象)和子项添加到我上面提到的顶级节类型。
msg.Add(myCustomType)
Xml样本:
<message to='foo@bar.com' type='chat'>
<x xmlns='my-custom namespace'>
<foo/>
</x>
</message>
另请参阅教程中的扩展 MatriX 部分。