Я использую сигнал 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 объекта в качестве параметра в xmppClient.Send () Или есть способ передать объект в Matrix.Xmpp.Client.Message (не в виде строки).
Я зацикливаю получателей и отправляю сообщение для группового чата. Есть ли другой способ сделать? Я попытался передать имя группы и изменить тип сообщения как GroupChat. Но все равно это не сработало.
Любая помощь будет принята с благодарностью.