在新版本的BeetleX.Bumblebee
中实现了对Weboskcet
代理的支持,因此使用BeetleX
搭建同时支持HTTP和Weboskcet的网关只需要几行代码的工作就能完成;接下来构建一个简单的网关程序并测试一下对asp.net core SignalR
进行代理的应用。
引用组件
使用BeetleX
构建网关只需要引用BeetleX.Bumblebee
即可,不过你相信也不想通过硬编码的方式来配置服务和负载策略;所以为了管理方便还是引用一下 BeetleX.Bumblebee.Configuration
,这是组件的一个网关管理插件;除了这个外组件还提供了很多插件,在这里就不介绍了详细可以访问beetlex.io
搭建服务
使用组件搭建自己的网关真的只需要几行代码即可完成,代码如下:
public class HttpServerHosted : IHostedService{private Gateway g;public virtual Task StartAsync(CancellationToken cancellationToken){g = new Gateway();g.HttpOptions(o =>{o.Port = 80;o.LogToConsole = true;o.WriteLog = true;});g.Open();g.LoadPlugin(typeof(Bumblebee.Configuration.Config).Assembly);if (Environment.OSVersion.Platform == PlatformID.Win32NT){var ps = new ProcessStartInfo($"http://localhost:{g.HttpServer.Options.Port}/__system/bumblebee/index.html"){UseShellExecute = true,Verb = "open"};Process.Start(ps);}return Task.CompletedTask;}public virtual Task StopAsync(CancellationToken cancellationToken){g.Dispose();return Task.CompletedTask;}}
以上就是一个完全整网关的服务代码,它在本机AnyIP的80
端口开启服务,启动后可以看到组件的启动情况。
构建一个SignalR项目
可以构建一个简单的asp.net core SignalR
项目并运行在5000
端口上
配置代理
接下来就把80
端代理到5000
这个SignalR
项目上,由于SignalR
这个项目除了有websocket
外还有传统的http
页面;所以需要在网关中添加对应这个端口的http
和ws
服务,具体如下:
添加完成服务后还需要把服务添加到路由上
添加完成后点保存代理即可生效,接下来就可以访问80
了。
一个HTTP和Weboskcet网关服务就这样完成是不是很简单呢,其实组件的功能还有很多,如果需要了解可以访问
beetlex.io
需要完全示例代码可以访问
https://github.com/IKende/BeetleX-Samples/tree/master/Gateway.Base
想体验一下简单的代理后的websocket聊天服务可以访问
http://chat.beetlex.io