首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Websharper实现客户端与服务器的实时交互

使用Websharper实现客户端与服务器的实时交互
EN

Stack Overflow用户
提问于 2012-11-11 09:23:25
回答 3查看 755关注 0票数 3

我只是在学习Websharper,但在短期内,我有一个业务问题,我试图解决。我已经编写了一个服务器和基于WPF的客户端,它允许用户使用滑块等控件改变输入,并实时从服务器获得反馈(即没有“提交”按钮)。

我想使用Websharper将此桌面GUI应用程序转换为web应用程序。我如何做后台请求-响应到服务器,由用户滑动和滑块触发,并导致反馈在网页中异步可视化?

EN

回答 3

Stack Overflow用户

发布于 2012-11-11 16:21:43

我认为最明显的方法是为您的服务器端逻辑创建一组[<Rpc>]-decorated方法,然后在UI中的任何更改时简单地调用它们。IIRC,Websharper透明地处理客户端-服务器的转换,也就是说,如果你调用一个服务器方法,必要的代理将会触发来得到结果。

票数 2
EN

Stack Overflow用户

发布于 2012-11-12 22:42:29

正如已经指出的,您可以依赖RPC方法,但这可能会带来不可接受的延迟。

在IntelliFactory,我们现在正在做一个项目,需要在服务器和客户端之间进行异步、双向和低延迟的通信。我们最终使用了WebSocket协议。我们计划很快将代码记录并发布到一个可重用的库中,供有类似需求的人使用。

就我们的目的而言,WebSocket协议的主要优势是它允许在连接的服务器端维护状态。我们的服务器是在Windows Azure中运行的worker角色。当建立WebSocket连接时,服务器由Azure负载均衡器随机选择,而客户端在连接打开时与相同的服务器对话。这允许在服务器上维护昂贵的每个连接的初始化状态。

WebSocket协议的缺点是缺乏旧浏览器的支持。一种可移植的低延迟替代方案是SignalR,它使用某种形式的超文本传输协议轮询来模拟旧浏览器上的功能。不幸的是,到目前为止,我们还没能让SignalR适应我们在Azure上的需求。理论上这应该是可能的,但由于Azure遵循了一种基本无状态的设计,这将需要编写一个路由器来重定向消息并“取消”SignalR负载均衡器的影响。

票数 2
EN

Stack Overflow用户

发布于 2012-11-11 16:25:54

我不知道WebSharper的集成点,但Rx有许多很好的概念和函数,用于功能性和反应性事件处理,如节流(需要滑块和异步网络调用)。

https://github.com/Reactive-Extensions/RxJS https://github.com/panesofglass/FSharp.Reactive

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13327792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档