【发布时间】:2018-02-05 15:12:07
【问题描述】:
我创建了一个 ASP.NET MVC5 应用程序,后端使用 signalR,前端使用 javascript(主要用于学习)。从功能上讲,它非常简单,它只允许任何连接的客户端查看项目列表,并且每个客户端都可以添加/删除项目。对列表的任何更改都会在所有客户端上异步更新。我已将客户端代码连接到我的集线器,该集线器似乎正在工作(由 console.log 语句确认),但我的服务器方法似乎没有工作,即当我尝试使用 AddItem 方法添加新项目时(),我没有得到更新值的列表。
谁能告诉我我做错了什么?我已将我的代码添加到 GitHub,以便他人查看:https://github.com/mildeveloper/ItemListWebApp/tree/develop
这是我的 javascript 代码:
(function () {
var itemHub = $.connection.itemHub;
var updateItemsRetrievedByClient = function (items) {
console.log("Items obtained by client: " + items.length.toString());
$("#item-list").empty();
for (var i = 0; i < items.length; i++) {
$("#item-list").append("From client: " + items[i] + "<br/>");
}
};
var updateItemsPushedFromServer = function (items) {
console.log("Items received from server: " + items.length.toString());
$("#item-list").empty();
for (var i = 0; i < items.length; i++) {
$("#item-list").append("From server: " + items[i] + "<br/>");
}
};
$("#submit").on("click",
function () {
var text = $("#textname").val();
itemHub.server.addItem(text)
.done(function() {
console.log("Adding item: " + text);
})
.fail(function(e) {
console.log(e);
});
itemHub.server.getItems()
.done(function (items) {
updateItemsRetrievedByClient(items);
})
.fail(function(e) {
console.log(e);
});
});
$.connection.hub.start()
.done(function () {
console.log("Connected to SignalR hub");
})
.fail(function (e) { console.log(e) });
itemHub.client.itemListUpdated = updateItemsPushedFromServer;
})()
这是我的中心类:
public class ItemHub : Hub
{
public void AddItem(string item)
{
ItemListController.AddItem(item);
var items = ItemListController.GetItems();
Clients.All.ItemListUpdated(items);
}
public void DeleteItem(string item)
{
ItemListController.DeleteItem(item);
var items = ItemListController.GetItems();
Clients.All.ItemListUpdated(items);
}
public string[] GetItems()
{
var items = ItemListController.GetItems();
return items;
}
}
【问题讨论】:
-
如果您能分享您希望我们查看的代码片段,那就太好了。
-
很多人(包括我自己)不点击问题中的链接,所以对于@hardkoded 的观点,你能包含有用的代码吗?
-
发布添加项目后console.log的样子
-
很抱歉没有直接在帖子中发布代码,我以后会这样做。非常感谢。
标签: javascript c# asp.net signalr