c# - 如何减少signalR中的消息大小?
问题描述
我正在使用 siglarR 自助托管服务,我的问题是消息大小,我想将大小从 1kb 减小到仅 30 字节,因为我正在从事股票市场服务,该服务非常频繁地发送数据但消息大小很小,但 signalR 需要最小消息大小是 1kb,它需要巨大的网络带宽。如果您有任何解决方案,请告诉我。
像'123|234.52|568'这样的消息示例 // 请在下面找到更新的代码:
应用程序向服务器代码发送消息
if (IsConnected)
{
try
{
if (Convert.ToBoolean(ConfigurationManager.AppSettings["IsJsonData"].ToString()))
{
var obj = new
{
id = SymbolId,
head = colName_no,
value = string.Format("{0:0.####}", Double.Parse(newValue))
};
_hub.Invoke("ServerAlert", SymbolId, JsonConvert.SerializeObject(obj));
}
else
{
_hub.Invoke("ServerAlert", SymbolId, data);
}
}
catch (Exception ex)
{
GenerateLog(ex.ToString() + " " + JsonConvert.SerializeObject(dtrow), "server hub");
}
}
##服务器端代码##
public async void ServerAlert(string groupName, string message)
{
//await Clients.All.StockAlert(message);
//string Delimiter = ConfigurationManager.AppSettings["SplitMessage"].ToString();
Clients.Group(groupName).GroupStockAlert(message);
}
客户端接收消息代码
objMainForm._hub.On("GroupStockAlert", (x) =>
{
try
{
objMainForm.LastPingDateTime = DateTime.Now;
string[] ChangeData = x.Split(new string[] { objMainForm.Delimeter }, StringSplitOptions.RemoveEmptyEntries);
DataRow[] row = objMainForm.dtOnlineData.Select("SymbolId='" + ChangeData[0] + "'");
int RowIndex = objMainForm.dtOnlineData.Rows.IndexOf(row[0]);
DataTable Dt_ColumnName = objMainForm.dtAllHeaders.Select("RowNo='" + ChangeData[1] + "'").CopyToDataTable();
string exceldata = "t!!" + ChangeData[0] + "!!" + Dt_ColumnName.Rows[0]["Header"].ToString() + "!!" + ChangeData[2];
if (this.InvokeRequired)
this.Invoke(new livedata(this.ProcessServerData), new object[] { RowIndex, Dt_ColumnName.Rows[0]["Header"], ChangeData[2], ChangeData[0] });
ChangeData = null;
row = null;
RowIndex = 0;
}
catch (Exception ex)
{
}
finally
{
GC.SuppressFinalize(this);
}
});
谢谢大家
解决方案
推荐阅读
- graph-databases - memgraphdb:支持图形数据库中的时间旅行查询
- aem - 无法在 WCMPojo 中获取隐式对象
- java - 如何将 LocalDate 列表写入 java 中的文件?
- require - 如何在 Mathjax 中定义和使用宏?
- python - 模型中的额外 ID
- java - 如何在特定时间后自动关闭插页式广告?
- arrays - 数组维度
- bash - awk 在 /etc/hosts 中匹配不正确的主机名
- r - 当对数转换为R中的正态性时,如何做一个样本t.test()?
- c# - 如何不使用 CronSchedule 为石英的 Withschedule 设置时区