java - 带 websockets 连接的 Tic tac Toe

标签 java google-chrome glassfish websocket netty

我正在尝试使用在 glassfish 上运行的 websocket 来制作 tic tac toe。我已经下载了this example形成 git.首先,我想测试它,所以我将它作为普通的 java 进程在我的机器上运行。我还对 tictacto.js 做了一个小小的更改

  if (typeof MozWebSocket != "undefined") { // (window.MozWebSocket)
    appType = "Mozilla";
  } else if (window.WebSocket) {
    appType = "Chrome";
  } else {
    alert('ERROR: This browser does not support WebSockets');
  }

然后

    if (appType == "Mozilla") {
     ws = new MozWebSocket(WEBSOCKET_URL);
     //alert('MozWebSocket');
   } else {
     ws = new WebSocket(WEBSOCKET_URL);
     //alert('WebSocket');
   }

当我使用 FF 10.0 打开测试页面时,仅调用 onclose 事件,并且我得到状态“WebSocket 连接已关闭”。然后我用Chrome 17.0.963.46 m打开测试页面。状态也是“The WebSocket ....”,但服务器抛出异常。

run:
TicTacToe Server: Listening on port 9000
java.io.IOException: An established connection was aborted by the software in your host machine
    at sun.nio.ch.SocketDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:218)
    at sun.nio.ch.IOUtil.read(IOUtil.java:186)
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:359)
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
    at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:282)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:202)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

这是什么原因呢?我考虑了一些可能的问题:

  • 我使用 JBoss 存储库中的 Netty 3.2.6.Final。它可以使用与浏览器不同的 websocket 标准。
  • 在我的机器上将其作为 java 进程运行,而不是作为网络服务器运行。但 Netty 没有任何需要它的依赖项。
  • 位置错误。 var WEBSOCKET_URL = "ws://localhost:9000/websocket"; html 位置是 C:...web\kolo\src\main\webapp\t.html

我正在使用 Netbeans 7.1 和 glassfish 3.1

可以找到已修复的项目 https://github.com/lukasz-madon/Tic-Tac-Toe-with-WebSocket

最佳答案

我可能是网络套接字版本。这是 table Web 套接字版本以及浏览器支持哪些版本。

据我内存,3.2.6仅支持HyBi-00。

尝试Netty 3.3 。它支持多个版本。

关于java - 带 websockets 连接的 Tic tac Toe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230357/

相关文章:

java - 读取为 JSONObject 时对象属性小写

javascript - Window Object.print() 在 Chrome 中卡住

javascript - 在 Chrome 中选择特定单选按钮的脚本

html - Chrome 80 css 网格大后代导致网格增长

java - 由 : javax.naming.NamingException 引起

java - 如何从 Java 调用 Kotlin 标准库函数?

java - RelativeLayout 在 vi​​ew.setVisibility(View.GONE) 和 view.setVisibility(View.VISIBLE) 之后刷新

java - 如何解决 glassfish 上的 Web 服务应用程序中的 "HTTP Status 500 - Internal Server Error"问题?

rest - GlassFish错误:禁用JAX-RS EJB支持

java - Java 中的 for 循环向后运行时速度更快吗?