使用Firefox(而非Chrome)连接后,Jetty 9.2.x Websocket服务器连接会自动关闭

粗糙的

我想使用Jetty构建嵌入式Java WebSocket服务器。我正在使用Jetty 9.2.6。我的客户端是HTML javascript客户端。

使用Google Chrome(39,WebSocket版本13),我可以建立连接并双向发送数据。当我使用Firefox(34,WebSocket版本13)时,建立连接后,连接将立即关闭。在我的SocketListenerClass中,将调用onWebSocketConnect事件,然后立即调用onWebSocketClose事件。我为Socket尝试了3个版本。实现WebSocketListener,扩展WebSocketAdapter并使用注释。到处都一样。

我得到接近原因编号1005(CLOSE_NO_STATUS),但有时为1001。

这是我的代码:服务器:

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
public static void main(String[] args)
    {
    Server server = new Server(80);
    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.setContextPath("/");
    server.setHandler(context);
    context.addServlet(new ServletHolder(new MyServlet()), "/*");
    try
      {
      server.start();
      server.join();
      }
    catch (Exception e)
      {
      e.printStackTrace();
      }
    }

Servlet:

import javax.servlet.annotation.WebServlet;
import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
@SuppressWarnings("serial")
@WebServlet(name = "MyEcho WebSocket Servlet", urlPatterns = { "/egal" })
public class MyServlet extends WebSocketServlet
  {
    @Override
    public void configure(WebSocketServletFactory factory) {
        factory.register(MyEchoSocketWithListener.class);
    }
}

插座:

import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.WebSocketListener;
public class MyEchoSocketWithListener implements WebSocketListener
  {
  private Session outbound;

  public void onWebSocketClose(int statusCode, String reason)
    {
    this.outbound = null;
    System.out.println("Session has been closed. Reason: +"+statusCode + " , "+reason);
    }

  public void onWebSocketConnect(Session session)
    {
    this.outbound = session;
    System.out.println("New Connection established...");
    }

  public void onWebSocketError(Throwable cause)
    {
    cause.printStackTrace(System.err);
    }

  public void onWebSocketText(String message)
    {
    if ((outbound != null) && (outbound.isOpen()))
      {
      System.out.printf("Echoing back message [%s]%n \n", message);
      outbound.getRemote().sendString("Server-Echo: " + message, null);
      }
    }

JavaScript客户端:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>page title</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1>WebSocket Test</h1>
<section id="content"></section>
<script>
var ws;
setTimeout(function (){initWebsocket();}, 3000);

function initWebsocket()
    {
    ws = new WebSocket("ws://127.0.0.1:80/egal");
    window.onbeforeunload = function ()
        {
        ws.onclose = function ()
            {
            }; // disable onclose handler first
        ws.close()
        };
    ws.onopen = function ()
        {
        document.write("WebSocket opened <br>");
        ws.send("Hello Server");
        document.write("Hello Message sent... <br>");
        };

    ws.onmessage = function (evt)
        {
        document.write("Message: " + evt.data + "<br>");
        };

    ws.onclose = function ()
        {
        document.write("<br>WebSocket closed<br>");
        };

    ws.onerror = function (err)
        {
        document.write("Error: " + err);
        };
    }
</script>
</body>
</html>

服务器输出:建立了新连接...
会话已关闭。原因:+1005,空

为什么它在chrome上而不在FF上有效?他们使用的Websocket版本是13。我还尝试了Jetty 9.2.5,新的Mozilla Nightly和较旧的Firefox版本。没什么区别。

粗糙的

感谢您的回答。我解决了这个问题,这是由另一个愚蠢的错误引起的。

在我的HTML客户端中,我使用了体内的script标签。我也在websocket事件中使用document.write()。document.write()方法将覆盖整个正文内容。因此,目前我的JavaScript代码已删除。

非常愚蠢的错误...对此表示抱歉。:-)

我在问自己,为什么它仍然可以在Chrome浏览器中使用。:-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在Firefox 50上通过SSL连接到Jetty 9服务器

来自分类Dev

使用码头9运行jersey 2服务器

来自分类Dev

如何使用Chrome和Firefox与Ruby服务器建立安全的HTTP / 2连接?

来自分类Dev

从服务器关闭akka-http websocket连接

来自分类Dev

fail2ban / ipfw / Mac OS X服务器不拒绝连接

来自分类Dev

从外壳连接到X服务器

来自分类Dev

TTY登录后“无法连接到X服务器”

来自分类Dev

在Windows 10中使用X2go客户端连接到Centos中的X2go服务器的黑屏

来自分类Dev

如果从属服务器无法在Symfony2中运行,则自动连接到MySQL主服务器

来自分类Dev

AWS EC2 私有子网 - 不允许主机 X 连接到此 Mysql 服务器

来自分类Dev

嵌入式 Jetty 9 - 我需要 Websocket 服务器、REST Servlet 和文件服务器

来自分类Dev

会话上的Jetty 9 WebSocket服务器最大消息大小

来自分类Dev

会话上的Jetty 9 WebSocket服务器最大消息大小

来自分类Dev

Haporxy:如果服务器 1 关闭,则将连接重定向到第二个服务器;当服务器 2 出现故障时到第三台服务器;

来自分类Dev

“等待X服务器开始接受连接”无限循环

来自分类Dev

X服务器连接错误-“ Windows 10 + WSL”

来自分类Dev

Mac OS X中的Perforce服务器连接错误

来自分类Dev

从Windows通过X服务器远程连接到RHEL

来自分类Dev

如何连接到不带ssh的远程X服务器?

来自分类Dev

Arch Linux无法连接到X服务器

来自分类Dev

无法连接到X服务器错误

来自分类Dev

应用程序无法连接X服务器以启动

来自分类Dev

wkhtmltopdf wkhtmltoimage:无法连接到X服务器

来自分类Dev

地址已在使用中-在Cloud9 IDE中启动服务器时绑定(2)

来自分类Dev

服务器上的WebSocket连接状态

来自分类Dev

通过reflex-dom中的websocket检测到关闭的服务器连接?

来自分类Dev

无法使用Thunderbird或K-9连接到Exchange服务器

来自分类Dev

服务器关闭MTProto连接

来自分类Dev

phpseclib 连接被服务器关闭?

Related 相关文章

  1. 1

    无法在Firefox 50上通过SSL连接到Jetty 9服务器

  2. 2

    使用码头9运行jersey 2服务器

  3. 3

    如何使用Chrome和Firefox与Ruby服务器建立安全的HTTP / 2连接?

  4. 4

    从服务器关闭akka-http websocket连接

  5. 5

    fail2ban / ipfw / Mac OS X服务器不拒绝连接

  6. 6

    从外壳连接到X服务器

  7. 7

    TTY登录后“无法连接到X服务器”

  8. 8

    在Windows 10中使用X2go客户端连接到Centos中的X2go服务器的黑屏

  9. 9

    如果从属服务器无法在Symfony2中运行,则自动连接到MySQL主服务器

  10. 10

    AWS EC2 私有子网 - 不允许主机 X 连接到此 Mysql 服务器

  11. 11

    嵌入式 Jetty 9 - 我需要 Websocket 服务器、REST Servlet 和文件服务器

  12. 12

    会话上的Jetty 9 WebSocket服务器最大消息大小

  13. 13

    会话上的Jetty 9 WebSocket服务器最大消息大小

  14. 14

    Haporxy:如果服务器 1 关闭,则将连接重定向到第二个服务器;当服务器 2 出现故障时到第三台服务器;

  15. 15

    “等待X服务器开始接受连接”无限循环

  16. 16

    X服务器连接错误-“ Windows 10 + WSL”

  17. 17

    Mac OS X中的Perforce服务器连接错误

  18. 18

    从Windows通过X服务器远程连接到RHEL

  19. 19

    如何连接到不带ssh的远程X服务器?

  20. 20

    Arch Linux无法连接到X服务器

  21. 21

    无法连接到X服务器错误

  22. 22

    应用程序无法连接X服务器以启动

  23. 23

    wkhtmltopdf wkhtmltoimage:无法连接到X服务器

  24. 24

    地址已在使用中-在Cloud9 IDE中启动服务器时绑定(2)

  25. 25

    服务器上的WebSocket连接状态

  26. 26

    通过reflex-dom中的websocket检测到关闭的服务器连接?

  27. 27

    无法使用Thunderbird或K-9连接到Exchange服务器

  28. 28

    服务器关闭MTProto连接

  29. 29

    phpseclib 连接被服务器关闭?

热门标签

归档