Net 下的WebSocket

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

                       

WebSocket是HTML5最重要的特性,让网页真正支持双工通信
它淘汰了Ajax的长轮询机制,以更节约计算资源和带宽(Http报头很小)的方式通信(长轮询机制只是模拟的双工通信,不是真正的服务器推的方式)
WebSocket在未来一定会全面取代Ajax,所以一定要特别关注它,随便在网上搜了一下.net的WebSocket开发包不少
这里进行了比较

最终,我觉得选用SignalR是一个不错的库,它是基于mono的,所以可以跨平台,它可以自托管(不用IIS,寄宿在控件制台,或者windows服务之上),它还可以支持不支持WebSocket的浏览器,在浏览器不支持WebSocket时,自动模拟双工通信(应该是长轮询方式)

安装方式
在NuGet程序包管理器控制台上输入
Install-Package Microsoft.AspNet.SignalR -Version 1.0.1
这是针对.Net Framework 4.0 的版本
也可以默认使用最新版本的SignalR,使用如下命令
Install-Package Microsoft.AspNet.SignalR
它会自动检测依赖的所有库,下载并引入项目

正在尝试解析依赖项“Microsoft.AspNet.SignalR.JS (≥ 1.0.1)”。正在尝试解析依赖项“jQuery (≥ 1.6.4)”。正在尝试解析依赖项“Microsoft.AspNet.SignalR.SystemWeb (≥ 1.0.1)”。正在尝试解析依赖项“Microsoft.AspNet.SignalR.Owin (≥ 1.0.1)”。正在尝试解析依赖项“Microsoft.AspNet.SignalR.Core (≥ 1.0.1)”。正在尝试解析依赖项“Newtonsoft.Json (≥ 4.5.11)”。正在尝试解析依赖项“Owin (≥ 1.0)”。正在尝试解析依赖项“Microsoft.Owin.Host.SystemWeb (≥ 1.0)”。正在尝试解析依赖项“Microsoft.Web.Infrastructure (≥ 1.0.0.0)”。正在安装“jQuery 1.6.4”。已成功安装“jQuery 1.6.4”。正在安装“Microsoft.AspNet.SignalR.JS 1.0.1”。您正在从 Microsoft 下载 Microsoft.AspNet.SignalR.JS,有关此程序包的许可协议在 http://www.microsoft.com/web/webpi/eula/aspnet_and_web_tools_2012_2_RTW_EULA_ENU.htm 上提供。请检查此程序包是否有其他依赖项,这些依赖项可能带有各自的许可协议。您若使用程序包及依赖项,即构成您接受其许可协议。如果您不接受这些许可协议,请从您的设备中删除相关组件。已成功安装“Microsoft.AspNet.SignalR.JS 1.0.1”。正在安装“Newtonsoft.Json 4.5.11”。已成功安装“Newtonsoft.Json 4.5.11”。正在安装“Microsoft.AspNet.SignalR.Core 1.0.1”。您正在从 Microsoft 下载 Microsoft.AspNet.SignalR.Core,有关此程序包的许可协议在 http://www.microsoft.com/web/webpi/eula/aspnet_and_web_tools_2012_2_RTW_EULA_ENU.htm 上提供。请检查此程序包是否有其他依赖项,这些依赖项可能带有各自的许可协议。您若使用程序包及依赖项,即构成您接受其许可协议。如果您不接受这些许可协议,请从您的设备中删除相关组件。已成功安装“Microsoft.AspNet.SignalR.Core 1.0.1”。正在安装“Owin 1.0”。已成功安装“Owin 1.0”。正在安装“Microsoft.AspNet.SignalR.Owin 1.0.1”。您正在从 Microsoft 下载 Microsoft.AspNet.SignalR.Owin,有关此程序包的许可协议在 http://www.microsoft.com/web/webpi/eula/aspnet_and_web_tools_2012_2_RTW_EULA_ENU.htm 上提供。请检查此程序包是否有其他依赖项,这些依赖项可能带有各自的许可协议。您若使用程序包及依赖项,即构成您接受其许可协议。如果您不接受这些许可协议,请从您的设备中删除相关组件。已成功安装“Microsoft.AspNet.SignalR.Owin 1.0.1”。正在安装“Microsoft.Web.Infrastructure 1.0.0.0”。已成功安装“Microsoft.Web.Infrastructure 1.0.0.0”。正在安装“Microsoft.Owin.Host.SystemWeb 1.0.0”。您正在从 Microsoft 下载 Microsoft.Owin.Host.SystemWeb,有关此程序包的许可协议在 http://www.microsoft.com/web/webpi/eula/aspnet_and_web_tools_2012_2_RTW_EULA_ENU.htm 上提供。请检查此程序包是否有其他依赖项,这些依赖项可能带有各自的许可协议。您若使用程序包及依赖项,即构成您接受其许可协议。如果您不接受这些许可协议,请从您的设备中删除相关组件。已成功安装“Microsoft.Owin.Host.SystemWeb 1.0.0”。正在安装“Microsoft.AspNet.SignalR.SystemWeb 1.0.1”。您正在从 Microsoft 下载 Microsoft.AspNet.SignalR.SystemWeb,有关此程序包的许可协议在 http://www.microsoft.com/web/webpi/eula/aspnet_and_web_tools_2012_2_RTW_EULA_ENU.htm 上提供。请检查此程序包是否有其他依赖项,这些依赖项可能带有各自的许可协议。您若使用程序包及依赖项,即构成您接受其许可协议。如果您不接受这些许可协议,请从您的设备中删除相关组件。已成功安装“Microsoft.AspNet.SignalR.SystemWeb 1.0.1”。正在安装“Microsoft.AspNet.SignalR 1.0.1”。您正在从 Microsoft 下载 Microsoft.AspNet.SignalR,有关此程序包的许可协议在 http://www.microsoft.com/web/webpi/eula/aspnet_and_web_tools_2012_2_RTW_EULA_ENU.htm 上提供。请检查此程序包是否有其他依赖项,这些依赖项可能带有各自的许可协议。您若使用程序包及依赖项,即构成您接受其许可协议。如果您不接受这些许可协议,请从您的设备中删除相关组件。已成功安装“Microsoft.AspNet.SignalR 1.0.1”。正在将“jQuery 1.6.4”添加到 WebSites。已成功将“jQuery 1.6.4”添加到 WebSites。正在将“Microsoft.AspNet.SignalR.JS 1.0.1”添加到 WebSites。已成功将“Microsoft.AspNet.SignalR.JS 1.0.1”添加到 WebSites。正在将“Newtonsoft.Json 4.5.11”添加到 WebSites。已成功将“Newtonsoft.Json 4.5.11”添加到 WebSites。正在将“Microsoft.AspNet.SignalR.Core 1.0.1”添加到 WebSites。已成功将“Microsoft.AspNet.SignalR.Core 1.0.1”添加到 WebSites。正在将“Owin 1.0”添加到 WebSites。已成功将“Owin 1.0”添加到 WebSites。正在将“Microsoft.AspNet.SignalR.Owin 1.0.1”添加到 WebSites。已成功将“Microsoft.AspNet.SignalR.Owin 1.0.1”添加到 WebSites。正在将“Microsoft.Web.Infrastructure 1.0.0.0”添加到 WebSites。已成功将“Microsoft.Web.Infrastructure 1.0.0.0”添加到 WebSites。正在将“Microsoft.Owin.Host.SystemWeb 1.0.0”添加到 WebSites。已成功将“Microsoft.Owin.Host.SystemWeb 1.0.0”添加到 WebSites。正在将“Microsoft.AspNet.SignalR.SystemWeb 1.0.1”添加到 WebSites。已成功将“Microsoft.AspNet.SignalR.SystemWeb 1.0.1”添加到 WebSites。正在将“Microsoft.AspNet.SignalR 1.0.1”添加到 WebSites。已成功将“Microsoft.AspNet.SignalR 1.0.1”添加到 WebSites。
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

网站项目下多了一堆使用的库
这里写图片描述

找到下面一个系列文章,可以系统的学一学
《ASP.NET SignalR系列》

一个具体的例子,但没有完整代码
通过(Node Js||.Net)基于HTML5的WebSocket实现实时视频文字传输(上)

SignalR 2.0 MoveShape Demo 打开两个浏览器,随意拖动其中一个浏览器中的方块,另一个浏览器中的方块跟着动

打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!

           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

WebSocket是一种用于在客户端和服务器之间进行双向通信的协议。它提供了一种实时性更高、更高效的方式来传输数据,相比传统的HTTP协议,它可以降低网络延迟并减少网络流量。 在Net框架中,你可以使用System.Net.WebSockets命名空间下的类来实现WebSocket通信。下面是一个简单的示例代码: ```csharp using System; using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; public class WebSocketClient { public static async Task Connect(string url) { using (ClientWebSocket client = new ClientWebSocket()) { await client.ConnectAsync(new Uri(url), CancellationToken.None); await Task.WhenAll(Receive(client), Send(client)); await client.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None); } } private static async Task Receive(ClientWebSocket client) { byte[] buffer = new byte[1024]; while (client.State == WebSocketState.Open) { WebSocketReceiveResult result = await client.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None); if (result.MessageType == WebSocketMessageType.Text) { string message = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count); Console.WriteLine("Received: " + message); } } } private static async Task Send(ClientWebSocket client) { while (client.State == WebSocketState.Open) { string message = Console.ReadLine(); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(message); await client.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None); } } } ``` 你可以调用`WebSocketClient.Connect(url)`方法来连接到WebSocket服务器并进行通信。`url`参数应该是WebSocket服务器的地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值