Я пытаюсь реализовать систему комментариев в реальном времени в ASP.NET MVC 5, сделанную через веб-сокет PUSHER.Я хочу опубликовать и удалить комментарий в этой системе.
Функция отправки работает отлично, я следовал инструкциям в этом руководстве, и все работало нормально.(https://pusher.com/tutorials/realtime-comments-aspnet/)
Проблема, с которой я столкнулся, связана с функцией удаления. Сначала мне нужно удалить комментарий из базы данных (мне нужен идентификатор комментария), а после этого мне нужно сделать асинхронное удаление комментария из моегосписок веб-страниц (мне нужен индекс для этого комментария). Если я использую this.splice (index, 1), функция удаляет элемент, но когда я обновляю страницу, она перезапускается, потому что я не могу добраться до функции контроллера.
Я знаю, что SignalR будет отлично работать здесь, но я хочу сделать это с помощью веб-сокета.
Можете ли вы дать мне несколько советов о том, как я могу реализовать эту функцию? Я пытаюсь более 4 дней, и я могуне могу найти решение.
Спасибо.
public async Task<ActionResult> Delete_comment(Comment data)
{
Comment com1 = db.Comments.Find(data.CommentID);
db.Comments.Remove(com1);
db.SaveChanges();
var options = new PusherOptions();
options.Cluster = "eu";
var pusher = new Pusher("724721", "a3d740957cfa714c5b6e", "3e1e7ad2abc0c6ccf18f", options);
ITriggerResult result = await pusher.TriggerAsync("asp_channel", "asp_delete_event", com1);
return Content("ok");
}
ФОРМА
<form onsubmit="return false;">
<input type="hidden" id="CommentID" v-model="comment.CommentID" class="form-control" />
@Html.HttpMethodOverride(HttpVerbs.Delete)
<button class="btn" v-on:click="delete_comment()">remove </button>
</form>
УДАЛИТЬ СКРИПТ
listen2: function () {
my_channel.bind("asp_delete_event", (data) => {
this.comments.splice(data.index, 1);
alert("Comment Deleted2313");
})
},
delete_comment: function () {
axios.delete('@Url.Action("Delete_comment", "Comments", new {}, protocol: Request.Url.Scheme)', this.comment)
.then((response) => {
alert("Comment Deleted");
});
},