HTTP流服务器:线程?(HTTP stream server: threads?)

2019-09-29 15:41发布

我已经写在这里约我想创建的HTTP聊天服务器: 替代http端口? 该HTTP服务器应该流中的文本,以在网站上的同一个聊天室的每个用户。 该浏览器将保持连接状态,并等待进一步的HTML代码。 (是这样的作品,浏览器不会拒绝连接)。

我有一个新的问题:因为这个聊天服务器并不需要从客户端接收信息,这是没有必要听客户端服务器发送它的第一个响应之后。 新的聊天信息会被发送到服务器上的一个新的连接。 所以,我可以开2个线程,一个等待新的客户(或新的消息),一个用于HTML流。 这是一个好主意,或者我应该使用一个线程每客户端? 我不认为这是好事,有一个线程/客户端时,也有不少聊天用户在线,因为服务器应该处理自己的房间中的多个不同的聊天记录。

3个posibilities:1.一个线程对所有客户端,文本发送到每一个客户端连续 - 不应该有太大的滞后,因为它是唯一,这将是类似的文字:user1.send(“文字”); user2.send(“文本” ),...每个聊天或聊天室2.一个线程3.每个聊天用户一个线程 - ... ...多

谢谢你,我没有做太多与插座尚未;)。

Answer 1:

我觉得这个简单的应用程序最简单的模式是有线程池,然后为每个客户挑选可用线程或使其等到一个变为可用。

如果你想的HTTP服务器架构概念的理解严重谷歌以下几点:

  1. Apache的架构
  2. nginx的架构


Answer 2:

现在,你似乎在给定的线程总是执行给定的(类型的)任务的方面来思考。 而基本的设计可以是有意义的,以生产可伸缩的服务器这样的,它一般不会很好地工作。

通常,一个稍微更抽象的观点更好的作品出来:你有需要完成该做的那些工作任务和线程 - 但一个线程并没有真正的“照顾”它执行任务是什么。

这个观点,你只需要建立某种形式的数据结构的描述,需要做各的工作。 当你有你想要完成的任务,你在数据结构中填写描述任务,并把这项工作得到完成。 冥冥之中,有一些线程执行的任务。

在这种情况下,线程的确切数目变得大多无关紧要 - 它的东西,你可以(并)调整到适合的CPU核心可影响的基本设计的数量,任务的类型,等等,不是程序。



文章来源: HTTP stream server: threads?
标签: c++ http stream