赞
踩
安装
dotnet Install Microsoft.AspNetCore.SignalR.Client
WinForms 应用程序中使用 SignalR 连接到服务器时
以下是一个简单的示例,演示如何在 WinForms 中连接到 SignalR 服务器:
using System; using Microsoft.AspNetCore.SignalR.Client; using System.Windows.Forms; namespace SignalRWinFormsExample { public partial class MainForm : Form { private HubConnection _connection; public MainForm() { InitializeComponent(); } private async void MainForm_Load(object sender, EventArgs e) { // 1. 创建 SignalR 连接 _connection = new HubConnectionBuilder() .WithUrl("http://your-server-url/signalrHub") // 替换为您的服务器端点 .Build(); // 2. 定义客户端方法 _connection.On<string>("ReceiveMessage", message => { // 收到消息后的处理 Invoke(new Action(() => { listBoxMessages.Items.Add(message); })); }); // 3. 连接到服务器 try { await _connection.StartAsync(); MessageBox.Show("Connected to server"); } catch (Exception ex) { MessageBox.Show($"Error connecting to server: {ex.Message}"); } } private async void buttonSend_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(textBoxMessage.Text)) { try { // 4. 发送消息到服务器 await _connection.InvokeAsync("SendMessage", textBoxMessage.Text); textBoxMessage.Clear(); } catch (Exception ex) { MessageBox.Show($"Error sending message: {ex.Message}"); } } else { MessageBox.Show("Please enter a message to send."); } } private async void MainForm_FormClosing(object sender, FormClosingEventArgs e) { // 5. 断开连接 if (_connection != null) { await _connection.DisposeAsync(); } } } }
假设您已经在服务器端实现了名为 SignalRHub 的 SignalR Hub,并且该 Hub 包含了一个名为 SendMessage 的方法,用于接收来自客户端的消息,并将其广播给所有连接的客户端。客户端在收到消息时调用名为 ReceiveMessage 的方法来处理。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。