前言:
为实现网页与服务器实时互动,并且可以跟桌面端程序,甚至移动端App实时互动,查阅了很多资料,其中网页端限制较多,能实现的技术主要有socket.io,websocket和signalR,因为我只是个C#开发者,显然signalR更便于使用,如果你擅长Node.js,建议使用socket.io,当然这里面没有优劣之分,哪个方便用哪个。
据部分资料介绍,SignalR配合redis,也能实现千万人在线功能。
开发环境:
编程工具:VisualStudio 2022
Web端:ASP.NET Core Web 应用(MVC) .NET8.0
客户端:WPF .NET8.0
一,Web客户端开发:
1,利用node.js获取SignalR的js文件
2,通过Nuget包管理器安装SignalR的相关包
3,开发自己的SignalHub,类似Api接口,后续的通讯都是基于它进行的
using Microsoft.AspNetCore.SignalR;
namespace SignalrWeb.Scripts
{
public class SignalrHubTest : Hub
{
/// <summary>
/// 将消息发送到所有客户端,类似广播
/// </summary>
/// <param name="user"></param>
/// <param name="message"></param>
/// <returns></returns>
public async Task SendMessage(string user, string message)
{
try
{
//尝试将信息发给所有用户
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
catch (Exception ex)
{