【发布时间】:2017-02-23 02:17:21
【问题描述】:
我尝试使用 signalR 添加 Web 套接字功能,基于: chat example。
我有 2 个不同的项目 - 1:是纯服务器,包含web api: 我有一个网络方法来获取请求并调用集线器:
[HttpGet]
[Route("api/GetData")]
public IHttpActionResult GetCorpDataApi()
{
return Ok(getResponse());
**startWebSocket();**
}
start web socket方法调用:
private void startWebSocket()
{
MonitorHub hub = new MonitorHub();
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler(hub.DisplayTimeEvent);
myTimer.Interval = 3000;
myTimer.Start();
}
调用我的集线器中的方法:
public class MonitorHub : Hub
{
public void DisplayTimeEvent(object source, ElapsedEventArgs e)
{
var response = MonitorUtils.GetCorpData();
Clients.All.broadcastMessage(response);
}
}
(都在同一个项目中,编译没有错误)。
我的客户端代码位于客户端 Angular 项目中(也在 VS 下), 我在控制器中添加了所需的功能:
function initWebSocket() {
self.chatHub = null; // holds the reference to hub
self.chatHub = $.connection.MonitorHub; // **I dont have MonitorHub**
$.connection.hub.start();
self.chatHub.client.broadcastMessage = function (response) {
//bla bla
};
}
我想提一下,我在 index.html 中包含了这些文件:
<script src="scripts/Vendor/jquery/jquery-2.2.1.js"></script>
<script src="scripts/Vendor/jquery/jquery.signalR-2.2.1.js"></script>
<script src="scripts/signalr/hubs"></script>
<script src="assets/global/plugins/angularjs/angular.min.js" type="text/javascript"></script>
$.connection.MonitorHub 什么也得不到 - 未定义。
我真的相信这与服务器端的事实有关 与客户端在不同的项目中。当我运行一个像聊天示例这样的简单示例时,它可以工作 - 都在同一个项目中。
我在控制台中收到此错误: 错误:SignalR:加载集线器时出错。确保您的集线器参考正确,例如.
有什么想法吗?
【问题讨论】:
标签: websocket signalr signalr-hub