我正在尝试将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>' + " : " + 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
这是我的wwwroot的树形结构,我已经为signalr添加了.js文件:
最后,这是Firefox中的调试器结构,我可以看到signalr.js已被加载,jQuery和bootstrap也是如此..
那么为什么&#34; signalR&#34;未定义?我错过了什么?是因为我在我的项目中手动添加了signalr javascript文件吗? (可能...)
答案 0 :(得分:1)
我认为你的脚本是在加载signalr.js之前执行的。尝试使用事件来执行代码。如果我们在文档加载时执行此操作,那么我们将确保它已定义。
$(document).load(function(){
// your code here
});