做公开网站的步骤,长沙官网seo推广,天津做网站优化哪家好,商业网站开发设计报告以前用python#xff0c;go尝试在linux下做web服务#xff0c;python没有强类型支持与高性能#xff0c;go又没有很好的集成开发环境#xff08;还有强迫症的语法#xff09;#xff0c;回头看了几次.net#xff0c;都没有时间尝试#xff0c;现终于实现了这些想法go尝试在linux下做web服务python没有强类型支持与高性能go又没有很好的集成开发环境还有强迫症的语法回头看了几次.net都没有时间尝试现终于实现了这些想法与大家分享。做web大项目做工程必须要有称手的工具帮我调试、测试、开发。工程化很重要VS是一个称职好选手。环境CentOS 7.x.net core 2以下.net core 2安装操作为官方方法。如果你使用Docker那么更简单了只需要docker pull microsoft/dotnet就可以了。如果你使用Bash On Windows那么与实际对应的Linux子系统安装完全相同。https://www.microsoft.com/net/learn/get-started/linux/centosCentOS安装.net core其他系统在这个页面都可以选择包括RHEL、Ubuntu、Debian、Fedora、openSUSE依次执行root下没有sudo也可以sudo rpm --import https://packages.microsoft.com/keys/microsoft.ascsudo sh -c echo -e [packages-microsoft-com-prod]\nnamepackages-microsoft-com-prod \nbaseurl https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled1\ngpgcheck1\ngpgkeyhttps://packages.microsoft.com/keys/microsoft.asc /etc/yum.repos.d/dotnetdev.reposudo yum updatesudo yum install libunwind libicusudo yum install dotnet-sdk-2.1.101只需要这几部.net core 2就安装好了。用dotnet命令创建空web项目编译测试dotnet new web -o wstest
dotnet build wstest
dotnet run --project wstest注dotnet new 命令会帮你创建项目包括文件夹必要的项目文件。build与run命令之前可以cd wstest这样就可以免去后面的参数把当前目录当作操作对象。注可以再简洁点dotnet run -p wstest。编译运行一起完成。无意外的话项目已经启动并且在localhost端口默认是5000开始监听http请求。做这些事情的方便快捷是python、go、node.js、PHP、JAVA等等不能比的。当然如果你在Windows下就更快了包括后续的编码、调试、测试。接下来我们进入WebSocket阶段。1、我们先创建一个html文件放到项目的wwwroot目录下用于测试WebSocket。!DOCTYPE htmlhtmlbody div idout/div script var ws new WebSocket(ws://127.0.0.1:5000/ws) ws.onopen function () { log(open) } ws.onmessage function (ev) { log(ev.data) } function log(text) { out.innerHTMLdivtext/div } /script/body/html2、开启asp.net的静态文件访问与WebSocket支持。Linux下的asp.net宿主服务Kestrel已经支持WebSocket可以直接运行。在Startup.cs的public Configure成员函数中添加app.UseWebSockets();
app.UseStaticFiles();3、为Startup.cs的Startup类添加WebSocket处理方法成员函数async Task Echo(HttpContext ctx, WebSocket ws) { var bytes System.Text.UTF8Encoding.UTF8.GetBytes(ok); var buff new ArraySegmentbyte(bytes); await ws.SendAsync(buff, WebSocketMessageType.Text, true, System.Threading.CancellationToken.None); }4、再为Startup.cs的public Configure成员函数添加处理函数可选择去掉app.Run的调用app.Use(async (context, next) { if (context.WebSockets.IsWebSocketRequest) { WebSocket ws await context.WebSockets.AcceptWebSocketAsync(); await Echo(context, ws); } else await next(); });5、Startup.cs文件的头部添加引用using System.Net.WebSockets; 代码就这么多了。接下来验证结果。 注意1、如果你放到华为云、腾讯云这样有安全组的服务器上你需要开启之前提到的端口TCP转入权限。2、test.html中的websocket地址请更换为实际的服务器地址与端口。3、动态IP支持的云主机自己是不知道自己的外网IP地址的所以只能监听0.0.0.0端口或者内外绑定的端口。4、注意自己的防火墙是否放行对应的端口可用iptables或firewall-cmd查询CentOS7默认采用firewall-cmd作为防火墙的操作端。iptables也可以但是不能保存。可安装iptables-services解决。 dotnet run以后你可以找个浏览器访问你的http服务了。如果顺利你可以看到页面输出ok字样。说明asp.net core的静态页面已经输出并且页面用WebSocket协议访问我们的http服务。 不顺利的可能基本是监听的IP地址无法访问或端口未开放。另一个原因是dotnet创建的项目里没有项目配置文件你可能不知道怎么配置监听ip与端口。下面是launchSettings.json文件。你应该把它放到项目的Properties文件夹中。它是我从VisualStudio向导生成的文件中提取的。{ profiles: { anyname: { commandName: Project, launchBrowser: true, environmentVariables: { ASPNETCORE_ENVIRONMENT: Development }, applicationUrl: http://0.0.0.0:5000/ } }}好了祝你顺利原文https://www.cnblogs.com/fyter/p/linux_centos_aspnet_core_websocket.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com