【发布时间】:2015-12-22 00:54:18
【问题描述】:
我是初学 Java 程序员。
现在,我正在尝试使用 Vertx、SockJS 和 Openshift 制作自己的聊天服务器。
问题是,当我打开我的 openshift 网页时,并非总是如此,但有时,
Vertx 服务器会发送两次 html 文件,导致网页崩溃。就像下面一样。
<!DOCTYPE html><html>
<head>
....something
</script>
</body>
</html>HTTP/1.1 200 OK
content-type: text/html
Content-Length: 6334
<!DOCTYPE html>
<html>
<head>
.... something
</script>
</body>
</html>
如您所见,Server 已经发送了一条消息 HTTP/1.1 200 OK,但是 Vertx sever 再次发送了一个 html 文件。
这使我的浏览器向我显示纯文本,而不是 html。
我的 Vertx 服务器脚本如下所示,
public class WebChatVerticle extends AbstractVerticle {
public static JsonArray userList = new JsonArray();
@Override
public void start(Future<Void> fut) throws Exception{
HttpServerOptions serverOptions = new HttpServerOptions().setMaxWebsocketFrameSize(1000000);
HttpServer server = vertx.createHttpServer(serverOptions);
Router router = Router.router(vertx);
router.route("/").handler(routingContext -> {
HttpServerResponse response = routingContext.response();
response
.putHeader("content-type", "text/html")
.sendFile("../app-root/repo/webroot/view/index.html");
});
router.route().handler(CookieHandler.create());
SessionStore store = LocalSessionStore.create(vertx);
SessionHandler sessionHandler = SessionHandler.create(store);
router.route().handler(sessionHandler);
server.requestHandler(router::accept)
.listen(Integer.getInteger("http.port", 8080), System.getProperty("http.address"),result -> {
if (result.succeeded()) {
fut.complete();
} else {
fut.fail(result.cause());
}
});
}
}
通常网页看起来不错,但这种情况不会一直发生,可能只有 1/10 的机会发生。
但这让我很恼火。请帮帮我。
【问题讨论】:
-
您是否尝试将 .end() 添加到响应中?
-
@JochenBedersdorfer 哦,是的,我试过了,但是没有用。但是,我解决了这个问题。我现在就写一个答案。