本地网络上的 Mobile Phonegap 应用程序

Posted

技术标签:

【中文标题】本地网络上的 Mobile Phonegap 应用程序【英文标题】:Mobile Phonegap applications on a local network 【发布时间】:2015-03-24 04:25:30 【问题描述】:

我创建了一个使用 html5 和 websockets 的游戏,可以在电脑和移动设备上玩(也可以玩多个移动设备):

游戏有一个舞台 - PC 或平板设备。

还有一些玩家——其他移动设备

舞台和玩家之间的当前连接是通过一个数字(舞台显示一个数字,玩家可以通过该号码加入),但是,我正在寻找一种方式,玩家只需在与舞台相同的本地网络 - 意味着通过本地网络自动发现。

我一直在搜索 WebRTC 和其他 p2p 解决方案,但找不到任何东西。还有什么我可以使用的还是完全不可能的?

【问题讨论】:

Phonegap Bonjour/Zeroconf or Websocket IP Discovery from HTML5的可能重复 【参考方案1】:

您可以试试这个支持 android、Blackberry 10、ios 和 Windows 设备的cordova-plugin-networkinterface 插件。

【讨论】:

【参考方案2】:

从浏览器内部访问本地 IP 地址没有唯一的 javascript 方法。似乎确实有很多 Cordova/phonegap 插件声称可以做到这一点:

http://plugreg.com/plugin/weconstudio-it/phonegap-plugin-ipaddress https://github.com/jcesarmobile/my-phonegap-plugins/tree/master/iOS/NetworkInterfacesPlugin

和上面评论中指出的一样。貌似是安卓还是IOS。应该有人写一个同时适用于两者的!

如果是我。我可能会使用舞台上的浏览器标题:REMOTE_ADDR、HTTP_CLIENT_IP 等。这样做有一些好处:http://roshanbh.com.np/2007/12/getting-real-ip-address-in-php.html

在本地网络上,您将能够获得每台设备的真实 IP 地址。专用网络属于特定的地址空间:

10.0.0.0        -   10.255.255.255
172.16.0.0      -   172.31.255.255
192.168.0.0     -   192.168.255.255

因此,您的 Stage 将知道其客户端何时在 LAN 上连接到它。这能让你到达你需要去的地方吗?

【讨论】:

好吧,我可以接受你的想法并在 websockets 上使用它来告诉我 IP 地址(我使用的是 socket.io 所以***.com/questions/6458083/…)。但是,这是否足以确保 Stage 和 Players 在同一个本地网络中?就此而言,有没有办法让他们俩直接互相发送消息? 在我看来,如果IP地址在上述范围内,那么每个人都必须在同一个局域网上。 当然,我只是想问一下这是否是我每次都能获取 IP 地址的一种方式(在代理或其他情况下) 好问题。 Stage 是否也作为 phonegap 应用程序运行?它可以监听多个 IP 地址吗?可以在不重新启动服务器的情况下将其移入和移出网络吗?您将不得不考虑所有这些情况以及更多。在我看来,您每次都想检查呼叫者的 IP 地址。 Stage 有可能作为 phonegap 应用程序运行(该应用程序可以作为新玩家加入或开始新游戏 - 即创建新舞台)。与此同时,我没有用它创建任何类型的 P2P 或服务器,因为我不知道它是否可能。所以现在我只是使用 websockets 和远程服务器来连接设备。舞台不太可能移动到另一个网络,但是,它仍然会连接到同一个 websocket,允许继续播放(如果移动到另一个网络没有断开连接)

以上是关于本地网络上的 Mobile Phonegap 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

iPhone上的jQuery Mobile + PhoneGap无法加载页面

使用phonegap和jquery mobile开发iphone应用程序时如何禁用本机键盘上的Go按钮?

从 JQuery Mobile 到 PhoneGap / Cordova

在 jquery mobile / phonegap 中重新加载外部脚本(即谷歌地图)

Jquery Mobile & Phonegap 3 上的白色闪光和过渡问题

从 XCode 访问 Mac 上的本地主机? Phonegap 通过 Ajax 与本地 Rails 应用程序通信