Tic tac toe with websockets connection



我正在尝试使用在glassfish上运行的websocket制作tic-tac-toe。我已经从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 Connection Has Been Closed"。然后我用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进程的形式运行它将istead作为Web服务器。但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

我可以是web套接字版本。以下是web套接字版本表,以及哪个浏览器支持哪个。

从内存来看,3.2.6仅支持HyBi-00。

试试Netty 3.3。它支持多种版本。

最新更新