Javascript 从集线器类调用组信号器函数
我创建了一个Hub类。获取所有数据,但当Javascript 从集线器类调用组信号器函数,javascript,asp.net,signalr,signalr-hub,signalr.client,Javascript,Asp.net,Signalr,Signalr Hub,Signalr.client,我创建了一个Hub类。获取所有数据,但当Clients.Group(spokeCode).broadCast(message)时函数由api调用,它不会在我的ASP.NET网页(客户端页)上执行广播函数 1.我已检查/signal/hubs是否正确生成 2. OnConnected()成功调用 [MethodImpl(MethodImplOptions.Synchronized)] public void BroadCastMessage(string spokeCode, String con
Clients.Group(spokeCode).broadCast(message)时代码>
函数由api调用,它不会在我的ASP.NET网页(客户端页)上执行广播函数1.我已检查
/signal/hubs
是否正确生成2.
OnConnected()
成功调用
[MethodImpl(MethodImplOptions.Synchronized)]
public void BroadCastMessage(string spokeCode, String constr)
{
lock (this)
{
string procedureName = "procedureName";
string message = "message goes here ";
DataAccessLayer dal = new DataAccessLayer();
//DataSet ds = dal.Executedataset(constr, procedureName);
DataSet ds = dal.ExecuteDataset(constr, procedureName, new object[] { spokeCode });
foreach (var set in ds.Tables[0].AsEnumerable().GroupBy(c => c["SpokeCode"]))
{
try
{
DataTable dt = set.CopyToDataTable();
//for (int i = 0; i < dt.Rows.Count; i++)
//{
foreach (var r in set)
{
message += r.Field<string>("BatchNo") + " Lot No " + r.Field<string>("LotNo");
Clients.Group(spokeCode).broadCast(message);
//Clients.Group(r.Field<string>("SpokeCode")).BroadCast(message);
}
}
catch (Exception ex)
{
ErrorLogging log = new ErrorLogging();
log.EventLog(ex.Message);
//Clients.Caller.executeError("An Error has Occured Contact System Administrator");
Clients.Group(spokeCode).executeError("An Error has been Occured, Contact Administrator");
}
}
}
可能客户不在该组中?使用fiddler首先确保消息是从服务器发送的。根据Pawel的建议,如果将客户端代码更改为广播给所有客户端,客户端代码是否会执行?@adaam当我将代码从Group更改为all时,它会广播给所有用户。以下是我如何将用户添加到组中,请选中JoinToSpokeGroup上的add a breakpoint以确认添加;它是否具有预期的辐条代码?如何在客户端上设置查询字符串?它到达JoinToSpokeGroup,我使用Connection.hub.qs设置查询字符串@LarsHöppner
connectionHub.client.broadCast = function (message) {
alert(message);
};