SignalR长连接的简单用法

ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。

下面是简单的demo;参考(https://docs.microsoft.com/en-us/aspnet/core/signalr/javascript-client?view=aspnetcore-3.0)

一下代码运行的结果是:
前端通过(CarPositionChanged)像服务器发送一段数据,服务器接收后,再通过(RegisterClient)给前端推送相应的数据,整个过程中页面不会刷新

 document.addEventListener('DOMContentLoaded', function () {

        var messageInput = document.getElementById('message');

        // Get the user name and store it to prepend to messages.
        var name = prompt('Enter your name:', '');
        // Set initial focus to message input box.
        messageInput.focus();

        // 开始一个链接
        var connection = new signalR.HubConnectionBuilder()
            .withUrl('http://192.168.1.156:5000/privatecar')
            .build();
            connection.qs = { 'orderId' : '12346579' };

        // 服务器推送过来的信息
        connection.on('RegisterClient', function (name, message) {
            // Html encode display name and message.
            console.log(name)
            
        });

        // Transport fallback functionality is now built into start.
        connection.start()
            .then(function () {
                console.log('connection started');
                document.getElementById('sendmessage').addEventListener('click', function (event) {
                    // 发送到服务器
                    connection.invoke('CarPositionChanged', name, messageInput.value);

                    // Clear text box and reset focus for next comment.
                    messageInput.value = '';
                    messageInput.focus();
                    event.preventDefault();
                });
            })
            .catch(error => {
            console.error(error.message);
    });
    });

 

posted @ 2019-08-12 09:43  蜗牛菜菜  阅读(1668)  评论(0编辑  收藏  举报
footer