如何在HTML5 LibGDX / GWT中实现网络通信

时间:2015-06-12 09:47:59

标签: java html5 gwt websocket libgdx

GOAL :实现可以从LibGDX / GWT HTML5 / JavaScript部署与服务器通信的基本客户端。这是一个侧面项目多人在线浏览器游戏。

我知道并做了什么:我的所有网络体验都来自KryoNet(创建服务器对象,启动服务器,听取请求,繁荣你完成) - 这可以(或者在LibGDX / GWT HTML5部署中实现类似的架构?

经过几个小时的研究,我还没有运气,这些神奇的东西被称为“WebSockets”,每个人都说要使用。我发现的唯一“WebSockets”是在Gdx.net中,它们是“未实现”。

enter image description here

以下代码(在Libgdxclient-core中执行并从Libgdxclient-html编译)

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Net.Protocol;
import com.badlogic.gdx.net.Socket;


import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Net.Protocol;
import com.badlogic.gdx.net.Socket;


public class Client {
    private Socket socket;

    public Client() {
        Gdx.app.log("create()", "connecting.....");
        this.socket = Gdx.net.newClientSocket(Protocol.TCP, "127.168.1.1", 54555, null);
    }
}

生成此输出:

enter image description here

我遇到了几个关于WebSocket实现的GitHub存储库,但是我很难理解它们(如果有的话)实际上与LibGDX / GWT兼容并且可以真正使用我需要阅读的内容实现我的目标(我正在寻找纯Java解决方案)。

1 个答案:

答案 0 :(得分:1)

您可能已经解决了问题(或选择了其他解决方案),但它仍然可能对某人有用。

首先:Net实现中的套接字是TCP套接字,浏览器不支持 - 因此是空实现。即使您使用第三方GWT Web套接字实现,它仍然与LibGDX TCP服务器套接字不兼容。

但是,您可以选择众多Web套接字服务器实现中的一种,以及基于Java的Web套接字客户端解决方案,以及#34;标准"用于Web的LibGDX平台和GWT Web套接字。 LibGDX应用程序的常见选择似乎是:

  • Java WebSockets - 服务器和客户端实现。客户可以定位大多数常规LibGDX平台。
  • gwt-websockets - 一个非常简单的GWT包装" native"浏览器网络套接字。

我建议您研究一些额外的库:

  • nv-websocket-client - 与Android兼容的网络套接字客户端。
  • 来自realityforge
  • gwt-websockets - 更复杂的GWT网络套接字包装,包含更多功能。
  • Vert.x - 一个优秀的服务器框架,支持Web套接字。
  • gdx-websocket - LibGDX应用程序的常用Web套接字API。在内部使用 nv-websocket-client 和自定义GWT包装器来定位大多数LibGDX平台。免责声明:我是作者。