Функциональность удаления в реальном времени ASP NET MVC сделана с помощью PUSHER - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь реализовать систему комментариев в реальном времени в 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");
                });
        },
...