我有一个应用程序(asp.net c#(,目前有 5 个项目。我想将聊天添加到我的应用程序中,所以我使用信号器技术。如何在应用程序中配置客户端-服务器?由于我无法理解在我的项目中配置集线器连接,因此中心是在应用程序的另一个项目中创建的。 在Microsoft文档中,中心是在同一应用程序中创建的,因此它的配置就像var chatHub = $.connection.chatHub;一样。但就我而言,集线器是另一个项目。还有这个<script src="signalr/hubs"></script>
脚本标签是什么意思。
应用项目,项目评审
Add nuget library Microsoft.AspNet.SignalR
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
httpConfiguration.EnableCors(new EnableCorsAttribute("*", "*","*"));
appBuilder.UseCors(CorsOptions.AllowAll);
GlobalHost.DependencyResolver.Register(typeof(NotificationHub),
IocInitializer.Container.GetInstance<NotificationHub>);
appBuilder.Map(
"/signalr",
map =>
{
var hubConfiguration = new HubConfiguration {
EnableDetailedErrors = true };
map.RunSignalR(hubConfiguration);
});
appBuilder.MapSignalR();
}
public class NotificationHub : Hub
{
private static IHubContext hubContext =
GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
public IEcapBus EcapBus { get; set; }
public ISecurityDataProvider SecurityDataProvider { get; set; }
public NotificationHub()
{
this.SecurityDataProvider = securityDataProvider;
this.EcapBus = ecapBus;
}
public void Hello()
{
Clients.All.hello();
}
}
客户端代码添加信号器 jQuery 库
var connection = $.hubConnection(baseUrl);
connection.qs = "Authorization=" + token;
var chatHubProxy = connection.createHubProxy('NotificationHub');
var actionName = ['Notify'];
chatHubProxy.on(actionName[0], function (message) {
console.log("I got message");
console.log(message);
onReceiveMessage(message);
});
connection.start().done(function () {
console.log("connected");
}).fail(function (a) {
console.log('not connected' + a);
});
现在只需从服务器端的任何位置调用 NotifierHub.Hello((