C#原生WebSocket客户端ClientWebSocket使用
2021/11/9 17:09:52
本文主要是介绍C#原生WebSocket客户端ClientWebSocket使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
WebSocket框架有很多,现在经常用到Supersocket,现在要封装一个dll,里面用到WebSocket,但是如果dll里面引用第三方框架的话,引用自己封装的dll时还需要引用一堆额外的包,这就显得有点臃肿,因为只有一个客户端的WebSocket用原生的ClientWebSocket即可;
官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.net.websockets.clientwebsocket?view=netframework-4.7.2&f1url=%3FappId%3DDev16IDEF1%26l%3DZH-CN%26k%3Dk(System.Net.WebSockets.ClientWebSocket);k(TargetFrameworkMoniker-.NETFramework,Version%253Dv4.7.2);k(DevLang-csharp)%26rd%3Dtrue
连接并发送消息:
public static ClientWebSocket clientWebSocket; public static Uri serverUri; public SocketClient(string ip, int port) {var webSocketUrl = $@"ws://{ip}:{port}"; clientWebSocket = new ClientWebSocket(); serverUri = new Uri(webSocketUrl); clientWebSocket.ConnectAsync(serverUri, CancellationToken.None).Wait(); } public async Task SendMessageAsync(string Msg) { if(clientWebSocket.State != WebSocketState.Open) { await clientWebSocket.ConnectAsync(serverUri, CancellationToken.None); } if (clientWebSocket.State == WebSocketState.Open) { ArraySegment<byte> bytesToSend = new ArraySegment<byte>(Encoding.UTF8.GetBytes(Msg)); await clientWebSocket.SendAsync(bytesToSend, WebSocketMessageType.Text, true, CancellationToken.None); } }
接收消息
ArraySegment<byte> bytesReceived = new ArraySegment<byte>(new byte[1024]); WebSocketReceiveResult result = await ws.ReceiveAsync(bytesReceived, CancellationToken.None); Console.WriteLine(Encoding.UTF8.GetString(bytesReceived.Array, 0, result.Count));
ClientWebSocket里面的方法都是异步的,如果同步方法调用异步:
1.不需要获取返回值的:
clientWebSocket.ConnectAsync(serverUri, CancellationToken.None).Wait();
2.需要获取返回值的
var result = clientWebSocket.ConnectAsync(serverUri, CancellationToken.None).GetAwaiter().GetResult();
这篇关于C#原生WebSocket客户端ClientWebSocket使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具