如何从MVC应用程序调用SignalR API服务?
我来给你一步步拆解怎么在MVC应用里调用SignalR API服务,其实流程很清晰:
第一步:引入SignalR客户端脚本
先确保你的MVC项目里已经有SignalR的客户端依赖,最常用的是jquery.signalR.js。你可以通过NuGet包管理器安装Microsoft.AspNet.SignalR.JS,或者直接把脚本文件放到项目的静态资源目录里,在视图页面里引用它。第二步:配置SignalR服务地址
这就是你提到的关键代码啦,要指定SignalR服务的完整URL,把下面这段代码放到你的MVC视图(比如.cshtml文件)里:$.connection.hub.url = "http://localhost:PortNumber/signalr";记得把
PortNumber替换成你SignalR服务实际运行的端口号,比如服务跑在5005端口,就改成http://localhost:5005/signalr。第三步:获取Hub代理对象
假设你的SignalR服务端定义了一个名为ChatHub的Hub(当然你可以换成自己的Hub名称),客户端要先获取对应的代理才能和服务端交互:var chatHub = $.connection.chatHub;第四步:注册客户端接收消息的方法
SignalR是双向通信,所以客户端得提前定义好接收服务端推送消息的方法。比如服务端会推送用户消息,那客户端可以这么写:chatHub.client.receiveMessage = function (user, message) { // 这里写收到消息后的处理逻辑,比如把消息渲染到页面的列表里 $('#messagesContainer').append(`<div><strong>${user}</strong>: ${message}</div>`); };第五步:启动SignalR连接
最后启动连接,还可以加成功/失败的回调来做状态处理,顺便调用服务端的方法试试:$.connection.hub.start() .done(function () { console.log('SignalR连接成功啦!'); // 调用服务端Hub里的sendMessage方法,传参过去 chatHub.server.sendMessage('MVC客户端用户', '我从MVC应用连过来啦!'); }) .fail(function (error) { console.error('SignalR连接失败:', error); });
额外注意点
如果你的MVC应用和SignalR服务不在同一个域名或端口下,会遇到跨域问题,这时候要在SignalR服务端配置CORS支持,比如在Startup类里添加CORS中间件,允许MVC应用的域名访问。
内容的提问来源于stack exchange,提问作者Rajesh Kashyap

