4.客户端
4.1.引入 SignalR客户端库
在客户端项目中,引入相应的 SignalR客户端库。对于 .NET平台,可以使用 NuGet安装 SignalR客户端库。对于其他平台,如 JavaScript、Python 等,可以从官方文档下载相应的客户端库。
4.2.创建客户端连接
创建一个客户端连接,用于与服务器端的 SignalR中心进行通信。以下是一个使用 JavaScript创建客户端连接的示例:
//引入 SignalR库
var signalR = require('signalr');
//创建连接
var connection = new signalR.HubConnectionBuilder()
.withUrl('https://localhost:5001/chat') //替换为您的服务器地址
.build();
//连接成功后的回调
connection.on('Connected', function () {
console.log('Connected to the server');
});
//连接失败后的回调
connection.on('Error', function (error) {
console.error('Error:', error);
});
//启动连接
connection.start().catch(function (error) {
console.error('Connection start error:', error);
});
4.3.发送和接收消息
在客户端连接上,可以实现发送和接收消息的功能。以下是一个使用 JavaScript发送和接收消息的示例:
//发送消息
connection.invoke('SendMessage', { text: 'Hello, SignalR!' })
.then(function (result) {
console.log('Message sent:', result);
})
.catch(function (error) {
console.error('SendMessage error:', error);
});
//接收消息
connection.on('ReceivedMessage', function (message) {
console.log('Message received:', message);
});
4.4.断开连接
当不需要实时通信时,可以断开客户端连接。以下是一个使用 JavaScript断开连接的示例:
connection.stop().catch(function (error) {
console.error('Connection stop error:', error);
});
5.案例演示(DotNet客户端)
5.1.安装 SignalR客户端库
使用 NuGet安装 SignalR客户端库。
5.2.创建客户端连接
创建一个客户端连接,用于与服务器端的 SignalR中心进行通信。以下是一个使用 C#创建客户端连接的示例:
using System;
using Microsoft.AspNetCore.SignalR;
//引入 SignalR库
using Hub = Microsoft.AspNetCore.SignalR.Hub;
//创建连接
HubConnection hubConnection = new HubConnectionBuilder()
.WithUrl("https://localhost:5001/chat") //替换为您的服务器地址
.AddJsonProtocol()
.Build();
//连接成功后的回调
hubConnection.On<string, string>("ReceivedMessage", (_, message) =>
{
Console.WriteLine("Message received: " + message);
});
//启动连接
hubConnection.Start().Wait();
5.3.发送和接收消息
在客户端连接上,可以实现发送和接收消息的功能。以下是一个使用 C#发送和接收消息的示例:
//发送消息
hubConnection.Invoke("SendMessage", new { text = "Hello, SignalR!" }).Wait();
//接收消息
hubConnection.On<string, string>("ReceivedMessage", (_, message) =>
{
Console.WriteLine("Message received: " + message);
});
5.4.断开连接
当不需要实时通信时,可以断开客户端连接。以下是一个使用 C#断开连接的示例:
hubConnection.Dispose();
通过以上步骤,您可以使用 SignalR实现实时通信功能。根据实际需求,可以进一步扩展和优化实时通信系统,以满足各种场景的需求。
