C# 信号器中未定义的chat.client
我遵循了这一点 但是我正在聊天。客户端未定义 这是我的ChatHub.cs代码C# 信号器中未定义的chat.client,c#,asp.net,asp.net-mvc,asp.net-mvc-4,signalr,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Signalr,我遵循了这一点 但是我正在聊天。客户端未定义 这是我的ChatHub.cs代码 [HubName("ChatHub")] public class ChatHub : Hub { public void Send(string name, string message) { Clients.All.addNewMessageToPage(name, message); } } 还有我的star
[HubName("ChatHub")]
public class ChatHub : Hub
{
public void Send(string name, string message)
{
Clients.All.addNewMessageToPage(name, message);
}
}
还有我的startupclass.cs
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
在我的聊天视图中
@section scripts {
<script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script>
<script src="~/signalr/hubs"></script>
<script>
$(function () {
var chat = $.connection.ChatHub;
chat.client.addNewMessageToPage = function (name, message) {
$('#discussion').append('<li><strong>' + htmlEncode(name)
+ '</strong>: ' + htmlEncode(message) + '</li>');
};
$('#displayname').val(prompt('Enter your name:', ''));
$('#message').focus();
$.connection.hub.start().done(function () {
$('#sendmessage').click(function () {
chat.server.send($('#displayname').val(), $('#message').val());
$('#message').val('').focus();
});
});
});
function htmlEncode(value) {
var encodedValue = $('<div />').text(value).html();
return encodedValue;
}
</script>
}
我将从检查脚本
~/Scripts/jquery.signalR-2.2.0.min.js
及
如果您的方法位于服务器端,则可用 Clients.All.addNewMessageToPage(名称、消息) 您必须在浏览器端写入
chat.client.AddNewMessageToPage = function (name, message) {
$('#discussion').append('<li><strong>' + htmlEncode(name)
+ '</strong>: ' + htmlEncode(message) + '</li>');
};
chat.client.AddNewMessageToPage=函数(名称、消息){
$(“#讨论”)。追加(“”+htmlEncode(名称)
+“:”+htmlEncode(消息)+“ ”);
};
方法在服务器端addNewMessageToPage中,您必须在浏览器端写入addNewMessageToPage(大A)。对于从教程中复制代码并遇到相同错误的任何其他人,您可能需要更改以下内容:
<script src="signalr/hubs"></script>
到
是。在控制台中,两个都有。我在mylayout视图中包含了Js文件“我在mylayout视图中包含了Js文件”是什么意思?什么Js文件?我猜JQuery是因为所有其他需要的Js文件都已经包含在您的聊天视图(部分)…@MichalLevý:是的。你是对的。我说的是Jquery.jsAsclient
是hub客户端代理的属性,我感兴趣的是动态生成的代理文件的确切内容。只需在浏览器中访问/signalr/hubs
,然后将内容粘贴到问题中,请…您是否可以使用它?我也有一个类似的问题@新手:是的。用这个
chat.client.AddNewMessageToPage = function (name, message) {
$('#discussion').append('<li><strong>' + htmlEncode(name)
+ '</strong>: ' + htmlEncode(message) + '</li>');
};
<script src="signalr/hubs"></script>
<script src="~/signalr/hubs"></script>