Websocket 我不知道';无法获取$.connection。[hubName]

Websocket 我不知道';无法获取$.connection。[hubName],websocket,signalr,signalr-hub,Websocket,Signalr,Signalr Hub,我尝试使用signalR添加web套接字功能,基于: 这个 我有两个不同的项目- 1:是纯服务器,包括web api: 我有一个web方法来获取请求并调用hub: [HttpGet] [Route("api/GetData")] public IHttpActionResult GetCorpDataApi() { return Ok(getResponse()); **startWebSocket();** } start we

我尝试使用signalR添加web套接字功能,基于: 这个

我有两个不同的项目- 1:是纯服务器,包括web api: 我有一个web方法来获取请求并调用hub:

[HttpGet]
    [Route("api/GetData")]
    public IHttpActionResult GetCorpDataApi()
    {
        return Ok(getResponse());
        **startWebSocket();**
    }
start web套接字方法调用:

private void startWebSocket()
    {
        MonitorHub hub = new MonitorHub();
        Timer myTimer = new Timer();
        myTimer.Elapsed += new ElapsedEventHandler(hub.DisplayTimeEvent);
        myTimer.Interval = 3000;
        myTimer.Start();
    }
调用my hub中的方法:

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未获取任何内容-未定义

我真的相信这与服务器端 与客户端处于不同的项目中。当我运行一个简单的示例(如聊天示例)时,它可以正常工作-都在同一个项目中。

我在控制台中看到此错误: 错误:信号器:加载集线器时出错。确保您的集线器参考是正确的,例如..


有什么想法吗?

我不是100%确定,但这可能是因为
JQuery
版本不匹配。尝试使用较低版本的jquery,例如jquery-1.6.4.js

您似乎没有将SignalR server添加到项目中。您似乎正在启动一个WebSocket,创建一个hub实例并抛出一些WebAPI。这不是信号器的工作方式。您需要将SignalR服务器软件包安装到服务器上,然后SignalR将负责处理您的呼叫、实例化集线器等。只需按照您发布的链接教程(设置项目部分)或。

谢谢,但事实并非如此。我仍然在控制台:error:signal:error加载集线器时出错。确保您的集线器参考是正确的,例如,ok。检查js文件是否存在任何资源路径不匹配问题。这是信号器生成的文件。您能否通过在本地主机路径中附加“信号器/集线器”来检查它是否可用?它不存在:-(您的导入语句可能是这样的:Hi Pawel,谢谢您的回复。我浏览了我添加的帖子,并使用nuget将信号器添加到服务器端。服务器运行和初始化良好。顺便说一句,我有一个工作示例,其中客户端和服务器在同一个项目中。这里的区别是服务器在一个pro中ject和另一个客户端。还有其他想法吗?谢谢!如果您的javascript来自与SignalR运行的服务器不同的服务器,您需要启用CORS。这是一个教程,其中他们做了类似的事情-SignalR服务器是自托管的,但包含javascript文件的html是从单独的服务器提供的。