2012-03-27 93 views
1

我正在建立一个网站,提供关于各种主题的1对1辅导。教练是通过网络完成的(视频通话,文件上传,这样的东西),最重要的事情之一是客户按时付款。我的问题如下:我如何知道教练课程结束的时间(以便我可以正确记帐客户)?这个用例推荐的解决方案/技术是什么?

我打算在教练会议大致存储在数据库中是这样的:

coach_id:integer 
    client_id:integer 
    created_at:datetime 
    updated_at:datetime 
    in_progress:boolean 

在会议的最后,我会做的updated_at和created_at之间的差异,并得到会议的长度。

下面是我看到潜在的问题:

  • 教练失去网络连接=>在这种情况下,客户会按网站,该网站会通知我们,本次会议有一个问题上的一个按钮,和会议的updated_at将被更新,并false

  • 客户端失去网络连接=>相同的工作流程in_progress将被设置为当主教练失去网络连接

  • 都失去互联网访问=>这是最棘手的情况。我不知道如何通知服务器该会话应视为已完成。我正在考虑通过推送来完成,并且同时拥有客户端的浏览器和教练的浏览器每分钟更新一次服务器。最坏的情况下,错误会导致账单1分钟的差异,这是可以接受的。缺点是我认为这可能会加载服务器很多,我不知道一旦我们有很多用户,这是否仍然是一个可行的解决方案。

您对这种方法有什么看法?如果它很重要,应用程序将建立在Rails 3.2上。

+1

为什么不检查HTML5 EventSource或WebSockets作为检测连接/丢失连接的可能方法? – 2012-03-27 10:27:52

+0

@PeterAronZentai,是的,但如果两个人都失去连接?谁会通知服务器? – Geo 2012-03-27 10:31:50

+0

至少在.NET中(我猜在所有服务器环境中)都可以看到客户端是否仍然连接(tcp明智)。 EventSource/WebSockets可帮助您建立一个始终打开的连接(而不是短时间连接的请求/响应连接),您可以监视它是否仍在运行/打开。 – 2012-03-27 11:18:56

回答

1

为什么不检查HTML5 EventSourceWebSockets作为检测连接/丢失连接的可能方法?

至少在.NET中(我猜在所有服务器环境中)可以看出客户端是否仍然连接(tcp方式)。 EventSource/WebSockets可以帮助您建立一个始终打开的连接(而不是短时间连接的请求/响应连接),您可以监视它的运行/打开状态。

所以必须解决方案需要在websocket服务器上实现。

相关问题