Ocelot中文文档-Websockets
Ocelot额外支持代理websockets。这个功能在问题 212中被提出。
为了是Ocelot代理websocket,你需要做如下事情。
在你的Configure方法中,你要告知应用程序使用WebSockets。
Configure(app =>
{
app.UseWebSockets();
app.UseOcelot().Wait();
})
然后在你的ocelot.json中添加如下代码,用于配置websockets代理一个ReRoute。
{
"DownstreamPathTemplate": "/ws",
"UpstreamPathTemplate": "/",
"DownstreamScheme": "ws",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5001
}
],
}
使用这个配置,Ocelot将匹配所有进入的Websocket流量并将其代理到localhost:5001/ws。 更清晰的解释一下就是,Ocelot将接收来自上游客户端的消息,并将它们代理到下游服务,从下游服务接收消息并将这些消息代理到上游客户端。
已支持的
- 负载均衡
- 路由
- 服务发现
这意味着您可以运行websockets的下游服务,并在您的ReRoute配置中使用多个DownstreamHostAndPorts,或将您的ReRoute挂接到服务发现提供程序上,然后负载均衡上游请求......我认为这很酷:)
不支持的
不幸的是,很多Ocelot的功能都是非websocket所特有的,比如header和http客户端填充。 我列出了以下不适用的功能。
- 跟踪
- 请求Id
- 请求聚合
- 流量限制
- 服务质量
- 中间件注入
- 转换Header
- 委托处理程序
- 转换声明
- 缓存
- 认证 - 如果有人请求它,我们可能可以使用基本身份验证做些事情
- 授权
我不是100%确定这个功能在进入高速运转时会发生什么,所以请确保您彻底测试过!
Ocelot中文文档-Websockets的更多相关文章
- Ocelot中文文档-Route
路由(Routing) Ocelot主要功能是接收即将发来的请求并转发它们至下游服务.与此同时,以另一个http请求的形式(在将来这可能是任何传输的机制) Ocelot将一个请求的路由描述为另一个路由 ...
- Ocelot中文文档入门
入门 Ocelot仅适用于.NET Core,目前是根据netstandard2.0构建的,如果Ocelot适合您,这个文档可能会有用. .NET Core 2.1 安装NuGet包 使用nuget安 ...
- Ocelot中文文档-跟踪
Ocelot使用一个杰出的项目Butterfly 提供了跟踪功能. 为了使用跟踪,请阅读Butterfly的文档. 在Ocelot中如果你想跟踪一个ReRoute,你需要做如下事情: 在Configu ...
- Ocelot中文文档-不支持
Ocelot不支持一下几点... 分块编码 - Ocelot将始终获取body大小并返回Content-Length头. 如果这不适合你的场景,只能表示抱歉! 转发host头 - 您发给Ocelot的 ...
- Ocelot中文文档-路由
Ocelot的主要功能是接管进入的http请求并把它们转发给下游服务.目前是以另一个http请求的形式(将来可能是任何传输机制). Ocelot将路由一个请求到另一个请求描述为ReRoute.为了在O ...
- Ocelot中文文档-管理
Ocelot支持在运行时通过一个认证的Http API修改配置.有两种方式对其验证, 使用Ocelot的内置IdentityServer(仅用于向管理API验证请求)或将管理API验证挂接到您自己的I ...
- Ocelot中文文档-Raft(实验功能不能用于生产环境)
Ocelot最近整合了Rafty,这是我在去年一直研究的Raft的一个实现. 这个项目实验性非常强,所以在我认为它没问题之前,请不要在生产环境中使用Ocelot的这个功能. Raft是一种分布式一致性 ...
- Ocelot中文文档-入门
Ocelot只能用于.NET Core,目前是为netcoreapp2.0构建的,这个文档可能会帮你了解Ocelot是否适合你. .NET Core 2.0 安装NuGet包 使用nuget安装Oce ...
- Ocelot中文文档-配置
这里有一个配置的列子.其中有两个配置块.一个ReRoutes数组和一个GlobalConfiguration.ReRoutes配置块是一些告诉Ocelot如何处理上游请求的对象.Globalconfi ...
随机推荐
- RabbitMQ消息队列(五):Routing 消息路由
上篇文章中,我们构建了一个简单的日志系统.接下来,我们将丰富它:能够使用不同的severity来监听不同等级的log.比如我们希望只有error的log才保存到磁盘上. 1. Bindings ...
- Cocos2D:塔防游戏制作之旅(十六)
编译运行你的app,放置一些炮塔在你的地图上吧!你将看到炮塔在敌人移动如攻击范围时如何立即开始攻击,并且敌人的血条将随着攻击不断减少知道它们被人道毁灭!胜利即将来临了! 哦!Okay,这里只有少数细节 ...
- STL:map/multimap用法详解
map/multimap 使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理.它们可根据key的排序准则 ...
- 海量数据挖掘MMDS week3:流算法Stream Algorithms
http://blog.csdn.net/pipisorry/article/details/49183379 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 视音频编解码学习工程:H.264分析器
=====================================================视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习工 ...
- H5的学习之旅-H5的实体(14)
H5有些关键字比如<等等是显示不出来的,这时候,就需要用实体来表示,实体我理解就是最初的编码 代码实例 <!DOCTYPE html> <html lang="en& ...
- python,os操作文件,文件路径(上一级目录)
python获取文件上一级目录:取文件所在目录的上一级目录 os.path.abspath(os.path.join(os.path.dirname('settings.py'),os.path.pa ...
- “《编程珠玑》(第2版)第2章”:A题(二分搜索)
A题是这样子的: 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(在文件中至少缺失一个这样的数据——为什么?).在具有足够内存的情况下,如何解决该问题?如果有几 ...
- Spring--ApplicationContext
//中心接口,给应用提供配置信息 public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory ...
- os x 下的strace命令
在linux下的strace跟踪命令在os x下找寻不见鸟,取而代之的是 dtruss命令,在os x下看一个程序的动态库依赖可以使用 otools -L xxx命令