Websocket 我不知道';无法获取$.connection。[hubName]
我尝试使用signalR添加web套接字功能,基于: 这个 我有两个不同的项目- 1:是纯服务器,包括web api: 我有一个web方法来获取请求并调用hub: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
[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是从单独的服务器提供的。