【问题标题】:Cordova - How to make an online app/game with a Node.js serverCordova - 如何使用 Node.js 服务器制作在线应用程序/游戏
【发布时间】:2016-06-26 09:15:51
【问题描述】:

我研究 node.js 已经有一段时间了,现在想过渡到使用我的 cordova 应用程序连接到我的 node.js 服务器。

无论我在哪里看,似乎都找不到任何真正的答案或教程。

如果我用手机访问 myIP:8080,它会连接到服务器,但我该如何使用 cordova 应用程序呢?我尝试的一切甚至是远程关闭,我最终都会遇到一堆错误。请指导我。我很困惑:/

P.S 我最初尝试使用发送/接收 XMLHttpRequest() 和 PHP/MySQL 来制作游戏,代码工作但非常滞后.. 不得不找出困难的方法,这不是要走的路

【问题讨论】:

  • 你想使用 nodejs 服务器来托管你的 API 还是你想要一些套接字连接?
  • 你好 Zohaib。基本上,我想做一个多人游戏,所有文件都已经在应用程序上,只有信息(例如 x y 坐标;动作按钮)在玩家之间传递。我不想“只连接到浏览器播放”排序(如果这就是你要问的)完美的例子就是 Agar.io

标签: javascript node.js cordova server


【解决方案1】:

您可以通过使用 Socket.io 和 Nodejs 来从所有客户端获取实时数据。

您的应用将连接到托管在某处的服务器应用。如果您在 localhost(在您的计算机或桌面上)上运行服务器代码,则需要使用诸如 ngrok 之类的服务来公开它。您的应用程序会将玩家坐标发送到服务器,服务器会将这些坐标广播给所有客户端/玩家,并且对所有玩家都一样。如果您仍然需要任何帮助,请告诉我。

在您的客户端应用程序中,在 html 页面中加载此脚本,不完全相同但类似,它将在您的应用程序和服务器应用程序之间创建一个套接字连接(双工连接)。然后您将使用socket.emit() 将您的坐标发送到服务器应用程序。

<script>
  var socket = io('server ip');

  $('#button').click(function(){
    socket.emit('coordinates', {x: 1, y: 2});
  });

  // server can send you different events/data

  // 'moved' can be any event, its name can be 'abc'
  socket.on('moved', function(data){
    // process this data
  });
</script>

这里有一些资源。

【讨论】:

  • 我一直在阅读并遵循我可以得到的每一个教程。但他们似乎没有任何“客户端”,只有服务器。您只需访问 localhost:8080 即可。他们在服务器端显示server.listen(8080);,好的......但是我如何连接到服务器?我使用window.open('myIP:8080');XMLHttpRequest() 吗? Idk 我很累,很累,很困惑,几天来一直在努力让它工作
  • 例如你提供的socket.io网站的教程是:And if you point your browser to http://localhost:3000:启动服务器后..我不想在实际浏览器上继续,我只是想发送/接收来自它的信息
  • @rery 您不需要打开 localhost,您的 cordova 应用程序只是一个 html 应用程序,因此您将在应用程序页面中加载上述脚本,它将您的应用程序连接到服务器。每当您的玩家移动时,您将使用socket.emit() 语法将玩家的坐标发送到服务器。当服务器收到您的坐标时,它会将您的坐标发送给所有连接的客户端,就像您正在监听data 事件一样。如果服务器使用某个玩家的坐标和他的名字发送/广播一个事件data,您将在注册回调中使用daat 事件获得这些
  • 在教程中,app.initialize() 方法没有给出,这就是我在我的答案中放置的。那是套接字对象。
  • 我认为,您的 IP 不是全球性的。你可以通过添加路由/Hello World 响应并在浏览器中打开url 来测试它是否打开。我认为它不会打开..你需要做一些事情让它全球化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 2017-10-09
  • 2014-12-16
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
相关资源
最近更新 更多