signalR undefined但signalr.js在调试器中加载

时间:2018-03-20 13:40:54

标签: javascript asp.net-core signalr

我正在尝试将SignalR用于ASP.NET Core 2.0,但是当我尝试在我的View中实现SignalR客户端时,我得到了变量" signalR"尽管在我的编辑器中自动完成工作正常,但是未定义,这是脚本:

<script type="text/javascript">
var _transport = signalR.TransportType.WebSockets; //HERE
var connection = new signalR.HubConnection(`http://${document.location.host}/chat`, {transport: _transport});

var messageInput = document.getElementById('message');
var name = '@User.Identity.Name';
var button = document.getElementById('sendMessage');

connection.on('broadcastMessage', (name, message) => {
    var text = document.createElement('p');
    text.innerHTML = '<strong>' + name + '</strong>' + "&nbsp;:&nbsp;" + message;

    document.getElementById('messageArea').appendChild(text);
});

button.addEventListener("click", event => {    
    connection.invoke('send', name, messageInput.value);
    messageInput.value = '';
    messageInput.focus();
});

connection.start();

我在_Layout.cshtml中添加了signalr.js Environment include in _Layout.cshtml

这是我的wwwroot的树形结构,我已经为signalr添加了.js文件:

Tree structure in wwwroot

最后,这是Firefox中的调试器结构,我可以看到signalr.js已被加载,jQuery和bootstrap也是如此..

signalr correctly loaded..?

那么为什么&#34; signalR&#34;未定义?我错过了什么?是因为我在我的项目中手动添加了signalr javascript文件吗? (可能...)

1 个答案:

答案 0 :(得分:1)

我认为你的脚本是在加载signalr.js之前执行的。尝试使用事件来执行代码。如果我们在文档加载时执行此操作,那么我们将确保它已定义。

$(document).load(function(){
   // your code here
});