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); }); });