如何使用SignalR加入群组
How to join a group using SignalR
我刚开始使用SignalR(从今天开始),向所有连接的客户端发送消息很简单,但现在我只想发送到一个组。我找不到关于如何在客户端加入的简单文档。如果有人能帮忙,我怎么能简单地加入javascript方面的小组呢。谢谢你的帮助。
public class EventHub : Hub
{
public void SendNewMedia(MediaInfoViewModel model,Guid eventId)
{
Clients.Group(eventId.ToString()).setupmedia(model);
}
}
//Controller that is sending client new data
var eventHub = GlobalHost.ConnectionManager.GetHubContext<EventHub>();
var result = eventHub.Clients.Group(eventId.ToString()).setupmedia(eventViewer);
//Finally the javascript. Not sure how to setup just for a group
$(function () {
var event = $.connection.eventHub;
event.client.setupmedia = function (newMedia) {
$('#photolist').prepend('<li><img src="' + newMedia.MediaUrl + '" class="img-polaroid span2"/></li>');
};
$.connection.hub.start(function() {
event.server.create(eventID);//I know this is wrong but not sure how to connect
}).done(function () {
alert('conntected. Ready to retrieve data!');
});
});
你不能。如果你可以从javascript加入一个群组,那么任何人都可以使用你的代码加入任何破坏安全的群组。如果确实需要这样做,请在服务器端创建一个方法,该方法以组名为参数,并将客户端添加到组中。
public void JoinGroup(string groupName)
{
this.Groups.Add(this.Context.ConnectionId, groupName);
}
然后,像一样从JS调用它
eventHub.server.joinGroup("my-awsm-group");
-------------------------在Javascript(ReactJs)中------------------------------
const connection = new signalR.HubConnectionBuilder()
.withUrl("connectionUrl")
.build();
connection.start().then(res => {
connection.invoke("JoinGroup", "groupName") //JoinGroup is C# method name
.catch(err => {
console.log(err);
});
}).catch(err => {
console.log(err);
});;
----------------在C#(.Net Core)------------------中
public class NotificationHub : Hub
{
public Task JoinGroup(string groupName)
{
return Groups.AddToGroupAsync(Context.ConnectionId, groupName);
}
}
为了防止您现在遇到这个问题(就像我一样),这里有一个如何实现azure函数以支持组的示例。
https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-signalr-service#2x-c组管理输出样本
相关文章:
- SignalR使用Chrome上的服务器发送事件
- 使用 SignalR 查明是否有人在另一个网站上按下了按钮
- 尝试在 Chrome 扩展程序中使用 SignalR 连接到中心时出错
- 将 SignalR 与 AngularJS 结合使用,如何编写单元测试
- jQuery.queue() 与使用回调函数完成某事有何不同
- 使用用于在同一函数中命名函数的变量名称有何意义
- 将 JavaScript 计时器与 signalR 事件结合使用来检查新数据
- 在unity3d中使用SignalR 2x
- 如何使用SignalR从服务器传递数组,并使用Knockout显示结果
- Signalr-连接已启动,但未使用websocket调用客户端事件
- 在SignalR集线器中使用jquery回调而不是RPC
- 使用Watir网络驱动程序Firefox与JavaScript SignalR轮询
- 如何使用实时(SignalR)更新数据
- 向用户发送与Facebook相同的关于新事件的通知's使用SignalR的通知
- 使用SignalR从wcf通知JS
- 如何使用SignalR加入群组
- 在全ajax导航网页中使用SignalR
- 如何在MVC中使用signalR加入客户端组
- 使用SignalR集线器向特定连接的用户广播消息
- 在使用SignalR时跟踪用户动作