前言
针对IOS App Proxy Server无法直连WebSocket,建立 Socket中转端。

WebSocket 端:
WebSocket 端用于实现实时通信功能。
WebSocket 端通过 WebSocket 协议与中转端通信,中转端可以通过 WebSocket 或其他传输协议与 WebSocket 端建立连接,收发消息。
定义 SendMessageToChatRoomIP 和 JoinChatRoom,用于处理来自客户端的消息和连接事件。
中转端 C1 (Socket Server):
中转端 C1 是一个独立的应用程序,用于连接WebSocket端,建立Socket服务。
中转端 C1 的主要功能是接收来自客户端 C2 的消息,并将其转发给 WebSocket 端,或者接收来自 WebSocket 端的消息,并转发给客户端 C2。
客户端 C2 x N :
客户端 C2 ,主要与中转端连接 发送数据,接收数据。
在客户端 C2 中,连接到中转端 C1、发送消息给中转端 C1、接收来自中转端 C1 的消息。
调用关系为:
客户端 C2 通过与中转端 C1 的通信,向 WebSocket 端发送消息或接收来自 WebSocket 端的消息。
中转端 C1 接收来自客户端 C2 的消息,并将其转发给 WebSocket 端,或者接收来自 WebSocket 端的消息,并转发给客户端 C2。

中转端实现
1.连接WebSocket
public async Task ConnectToServer()
{
try
{
connection = new HubConnectionBuilder()
.WithUrl("xxx/chathub")//
.Build();
connection.On<string, string, string, string>("ReceiveMessage", async (user, message, clientIP, chatRoomId) =>
{
Console.WriteLine($"Received message from wsserver_sr : {user}: {message} |socketserver {clientIP}|{chatRoomId}");
// 收到来自服务器的消息时,向客户端 C2 发送消息
await SendMessageToClientC2(user, message, clientIP, chatRoomId);
});
await connection.StartAsync();
}
catch (Exception ex)
{
Console.WriteLine($"Error connecting to SignalR server: {ex.Message}"

最低0.47元/天 解锁文章
662

被折叠的 条评论
为什么被折叠?



