Servicestack 服务器发送事件

2024-02-16

我刚刚开始搞乱我自己的 ServiceStack 服务器事件实现。

在阅读了 wiki 部分并阅读了聊天应用程序的代码后,我开始创建自己的新应用程序mvc4项目并通过 nuGet 安装所有 ServiceStack 库。

配置并创建后AppHost,我创建了一个新的“helloworld”服务并启动了该网站,只是为了确保它有效(它确实有效)。

现在主要问题。基于现有的示例代码(聊天应用程序),我创建了新的 HTML 页面和调用的服务ServerEvents.NotifyChannel然后我开始了新网站。

通过 ajax(post)调用服务时,调试器会遇到断点,但服务返回时不会触发客户端事件。更重要的是,通知似乎有点“缓存/延迟”,当第二次调用服务时,客户端会收到第一次调用的数据。

我应该使用servicestack.razor意见?我是否应该创建另一个 MVC 应用程序并再次从头开始构建所有内容来测试它?

编辑这篇文章以添加代码(如所指出的):https://github.com/xspadax/SS_SSE_Test https://github.com/xspadax/SS_SSE_Test


这个问题是由于Flush()无法正常工作ASP.NET MVC启用压缩时似乎会自动缓冲的项目,可以通过以下方式对动态页面禁用它:

<system.webServer>
  <urlCompression doStaticCompression="true" doDynamicCompression="false" />
</system.webServer>

顺便说一句,当启用压缩时,甚至用于缓冲输出的显式 API 似乎也没有任何效果:

Response.BufferOutput = false;

不使用 ASP.NET MVC 的普通 ASP.NET 项目,例如服务堆栈+剃刀 http://razor.servicestack.net/没有这个问题。

替代的纯代码解决方案

添加了新的 API https://github.com/ServiceStack/ServiceStack/commit/786ff8d055870a559f0c8a094c67ef02a5bab778 in v4.0.32+ that's 现已在 MyGet 上提供 https://github.com/ServiceStack/ServiceStack/wiki/MyGet为 ServiceStack 的服务器事件功能提供更多自定义挂钩,OnInit可用于修改服务器事件流的 HTTP 标头,同时OnPublish()每条消息发布后都会触发回调:

Plugins.Add(new ServerEventsFeature { 
    /*
    OnInit = req => { //fired when sending headers in server event stream
        var res = (HttpResponseBase)req.Response.OriginalResponse; //Get MVC Response
        res.BufferOutput = false; // Should make Flush() work, but doesn't
    },
    */
    OnPublish = (res, msg) => { //fired after ever message is published
        res.Write("\n\n\n\n\n\n\n\n\n\n");
        res.Flush();    
    }
});

上面的解决方案涉及编写一些尾随\n线路到强制冲洗在 MVC 中。这是一个有效的替代解决方案,因为服务器发送事件中会忽略尾随的新行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Servicestack 服务器发送事件 的相关文章

  • ServiceStack OrmLite 命令超时

    使用 IDbConnection ExecuteSql 时如何设置命令超时 IDbConnection db ConnectionFactory OpenDbConnection db ExecuteSql 如果我使用 IDbCommand
  • 关闭 ServiceStack 日志记录

    ServiceStack 的内部日志记录不是我希望在日志中包含的内容 我们如何禁用内部日志记录 或者至少抑制它 这样它就不会堵塞日志 配置 LogManager 时只需将其设置为 NullLogFactory 的实例 LogManager
  • 将 List 转换为 List

    理解了这个概念翻译 https groups google com forum msg servicestack BF egdVm3M8 0DXLIeDoVJEJ 使用它来将 DataModel 类型转换为表示层的 DTO 类型 这样效果很
  • ServiceStack:动态添加路由

    我还没有尝试过这个 但我希望每个模块 Silverlight 注册自己的路由 而不是将其添加到应用程序启动中 可以在应用程序启动后将路由添加到 AppHost 还是必须在配置步骤中立即注册它们 我正在考虑在启动时扫描所有程序集 并向AppH
  • Razor.ServiceStack - 视图不渲染,只是默认的“快照”

    我已经使用设置了一个网站http razor servicestack net http razor servicestack net 我创建了多个视图和匹配服务 示例如下 服务示例 using ServiceStack ServiceHo
  • ServiceStack CredentialAuthProvider 具有多个用户/密码

    我想使用自定义身份验证提供程序 但我不知道如何使标准身份验证内容处理更多用户和密码作为参数 这可以做到吗 取决于您想要做什么 如果您想通过继承 Credentials AuthProvider 创建自己的自定义身份验证提供程序 您可以通过以
  • 本地网络上的自托管 ServiceStack REST 服务

    我想知道是否有人可以提供帮助 我有一个本地网络 无线网络 我的计算机和连接到它的笔记本电脑 并且我尝试托管一个使用 ServiceStack 开发的休息服务 如果我在计算机上运行该应用程序 现在是控制台应用程序 并尝试使用计算机 IP 或
  • 多个嵌套表 - ServiceStack Ormlite

    我有一组嵌套表 例如 客户 gt 客户订单 gt 订单详细信息 我与服务堆栈和 ormlite 一起使用 我需要能够传入 customerid 然后返回一个 json 提要 其中客户订单嵌套在客户对象中 订单详细信息嵌套在每个客户订单对象中
  • Servicestack 服务器发送事件

    我刚刚开始搞乱我自己的 ServiceStack 服务器事件实现 在阅读了 wiki 部分并阅读了聊天应用程序的代码后 我开始创建自己的新应用程序mvc4项目并通过 nuGet 安装所有 ServiceStack 库 配置并创建后AppHo
  • ServiceStack API和ASP MVC两种认证方式

    我在解决通过 ServiceStack 提供 html 页面和 Web 服务的 ASP MVC 应用程序的体系结构时遇到问题 应用程序位于基本 url 中 例如 http myapplication com http myapplicati
  • 如何对ServiceStack进行单元测试?

    我喜欢 SS 但我在尝试对我的业务层进行单元测试时摸不着头脑 我是单元测试和模拟的新手 并且一直在阅读 NSubstitute 因为这看起来像是一个有趣的模拟层 我的文件结构大致如下 MainAppHostProject AppStart
  • servicestack AppHostHttpListenerBase handlerpath 参数不起作用?

    不确定我是否在这里遗漏了一些东西 我在单元测试中使用 AppHostHttpListenerBase 来测试服务 并在其构造函数中为 handlerPath 参数传递 api 我在 hello Name 注册了一个服务 并且使用的是 3 9
  • 如何使用 Moq 测试 ServiceStack 服务

    我有一个使用 ServiceStack 创建的休息服务 使用 nHibernate 作为从 SqlCe 数据库获取数据的方式 我一直在尝试使用 nUnit 和 Moq 编写一些单元测试 我已成功模拟 nHibernate 实现以返回 nul
  • 通过 nginx 和 ServiceStack 在 fastcgi-mono-server 上进行小负载测试后,网关 502 错误

    我正在尝试在 nginx 和 fastcgi mono server 下使用 ServiceStack 运行 Web 服务 API 服务器启动正常 API 已启动并运行 我可以通过 ServiceStack Profiler 在浏览器中查看
  • ServiceStack:手动调用服务时恢复管道?

    作为后续这个问题 https stackoverflow com questions 64560997 servicestack messaging api can it make a broadcast 我想了解如何改进我对服务的手动调用
  • 为什么我在 VIsualStudio 2017 中使用 ServiceStack 时收到错误“类型‘IReturn<>’是在未引用的程序集中定义的”

    我正在运行 Visual Studio 2017 15 6 3 我有一个 NET Standard 2 0 DLL 项目 其中包含与 ServiceStack 一起使用的请求和响应类 Request 类实现 IReturn 我有一个 NET
  • ServiceStack 与 MVC 并行运行

    我设法与 MVC4 并行运行 ServiceStack 但我仍然有一个小问题 希望有人可以帮助我解决这个问题 当通过 VS2012 执行调试会话时 一切都很完美 浏览器打开并且第一页加载良好 但是当刷新页面并尝试访问时http localh
  • ServiceStack 验证并不总是触发

    因此 我尝试使用 RavenDB 和 ServiceStack 构建端到端集成测试套件 但遇到了一个非常奇怪的问题 即验证无法对某些请求运行 这真的很奇怪 我不确定我做错了什么 我正在使用 NCrunch 有时测试通过 有时失败 希望这是一
  • 在 ServiceStack 中使用 ASP.NET 成员资格

    我该如何使用ASP NET 会员资格 in 服务栈 http www servicestack net ServiceStack OrmLite ServiceStack Host AspNet 等 您可以将 ServiceStack 托管
  • 使用 servicestack 如何防止 cookie 添加到响应中?

    我可以在事后删除cookie 方法如下 public override void Configure Funq Container container ResponseFilters Add req res dto gt HttpListe

随机推荐