gpt4 book ai didi

java - 聊天java网络服务器,http部分响应

转载 作者:行者123 更新时间:2023-11-30 04:56:19 25 4
gpt4 key购买 nike

我正在尝试进行网络聊天以与其他语言集成。我愿意用 java 创建我自己的网络服务器..它只知道响应特定的请求。

我有一个正在监听端口 80 的套接字。回答

out.print("HTTP/1.1 200 OK\r\n");
out.print("Content-Type: text/plain\r\n\r\n");

out.println("We have a text now");

out.print("\r\n");
out.print("\r\n");
out.print("0");
out.print("\r\n");
out.print("\r\n");

我的问题是...有没有办法使用部分响应来保持浏览器的套接字打开?

我只想在消息存在时发送消息..在这种情况下消息几乎会立即发送..

P.S:我不是在谈论网络套接字,因为并非所有程序都支持网络套接字...只有浏览器支持...(不支持网络套接字的程序:Internet Explorer)

我的问题是在这种情况下我是否可以使用部分响应(206)..以及如何保持页面“加载”并发送部分文本...?...我必须说内容长度或者其他的东西?我必须写什么标题...我只知道几种状态(200、301、404 等)。对于 206,我不知道在第一、第二、第三行写什么。如何发送响应(作为 xml、文本,或者我可以定义内容类型吗?)以及如何从 javascript 读取它?

例如,我希望这段代码每秒写入一些内容:

out.print("HTTP/1.1 200 OK\r\n");
out.print("Content-Type: text/plain\r\n\r\n");

for (int i = 0; i < 10; i++)
{
out.println("We have a text now");
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}

}

out.print("\r\n");
out.print("\r\n");
out.print("0");
out.print("\r\n");
out.print("\r\n");

问候

最佳答案

任何像样的 http 客户端都会使用 http keep-alives,因此如果用户在几秒钟内再次发出请求,他们将不需要打开新连接。如果您编写自己的 Web 服务器,则必须确保实现这一点,否则实现速度将比标准 Web 服务器或 Web 容器(例如 tomcat 或 jetty)慢。此外,由于许多语言都有良好的 http 库,因此您也不需要为此自定义 Web 服务器实现。

如果您编写了 servlet,则可能根本不会从 http 响应中返回,然后只是在响应出现时将其写出。但这会占用服务器上的线程,并且可能无法很好地扩展。

您可以尝试其中一种异步 http 实现(例如 netty 或 mina)并尝试一下,但这需要更多的工作——尽管它仍然比尝试自己实现要少得多。

关于java - 聊天java网络服务器,http部分响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8415695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com