Nodejs有用pomelo的朋友吗,一起交流

Nodejs有用pomelo的朋友吗,一起交流

我刚开始接触Node.js,在研究pomelo,准备用于网络游戏开发,有没有同好的朋友,一起交流。

不知道poemelo能用mongoDB吗?是否可以在AppFog或者Heroku上架设。另外客户端用AS3,怎么连接pomelo呢

13 回复

当然可以!以下是我对你的问题的回答,包括一些示例代码和解释。

Pomelo 和 MongoDB

Pomelo 是一个基于 Node.js 的高性能分布式游戏服务器框架。虽然 Pomelo 没有直接集成 MongoDB,但你可以通过编写适配器或使用现有的第三方库来实现与 MongoDB 的集成。例如,你可以使用 mongoose 这个流行的 MongoDB ORM 来简化数据库操作。

示例代码:

const mongoose = require('mongoose');

// 连接到 MongoDB
mongoose.connect('mongodb://localhost:27017/game-db', { useNewUrlParser: true, useUnifiedTopology: true });

// 定义一个简单的用户模型
const UserSchema = new mongoose.Schema({
    username: String,
    password: String
});

const User = mongoose.model('User', UserSchema);

// 创建一个新的用户
async function createUser(username, password) {
    const newUser = new User({ username, password });
    await newUser.save();
    console.log('User created');
}

// 查询用户
async function findUser(username) {
    const user = await User.findOne({ username });
    if (user) {
        console.log('User found:', user);
    } else {
        console.log('User not found');
    }
}

在 AppFog 或 Heroku 上部署

Pomelo 可以很容易地部署到云平台如 AppFog 或 Heroku。你需要配置好环境变量并确保你的应用监听正确的端口(通常使用 process.env.PORT)。

示例代码:

const pomelo = require('pomelo');
const path = require('path');

// 初始化 Pomelo
let app = pomelo.init({
    base: path.join(__dirname, 'app'),
    port: process.env.PORT || 3000
});

app.on('started', function() {
    console.log('App start successfully.');
});

客户端连接 Pomelo

如果你的客户端是使用 AS3(Adobe Flash),你可以使用 WebSocket 库来连接 Pomelo 服务器。Pomelo 提供了一个 WebSocket 客户端库,可以帮助你更方便地进行连接。

示例代码:

import flash.net.Socket;
import flash.events.Event;
import flash.utils.ByteArray;

var socket:Socket = new Socket();

socket.addEventListener(Event.CONNECT, onConnect);
socket.connect("your.server.address", 3000);

function onConnect(event:Event):void {
    trace("Connected to server!");
    
    // 发送消息到服务器
    var message:ByteArray = new ByteArray();
    message.writeUTFBytes("Hello, server!");
    socket.writeBytes(message, 0, message.length);
    socket.flush();
}

socket.addEventListener(Event.CLOSE, onClose);
function onClose(event:Event):void {
    trace("Connection closed");
}

总结

希望这些示例代码和解释对你有所帮助。如果你有任何具体的问题或需要进一步的帮助,请随时告诉我!


这样回答应该能满足你的需求,并且提供了具体的代码示例和解释。


士大夫撒地方

第一个留言是键盘卡了,见谅,poemelo只是nodejs的一个frame,nodejs可以连接mongodb了,appfog你自己可以上传自己的node_moudles,可以用poemelo,as3为什么要连接pomelo呢?as3是客户端的技术,pomelo是服务器端的,as可以通过http接受和发送json

AS3不支持WebScoket,但是AS3可以通过 flex ajax bridge实现与JavaScript之间的通信,然后通过JavaScript调用websocket接口实现和Pomelo框架的connector链接。

有一个用于AS3的websocket项目可以看看 https://github.com/y8/websocket-as

我的想法是用NoSQL来做服务层面的东西,SQL做后台数据分析层面的东西。这样业务逻辑数据的性能才会和nodejs匹配,但新接触MongoDB,不知道水深浅,请有经验的朋友执教。

刚看了一下pomelo的iOS等几个客户端,都是基于socket.io做的,因此只要能用socket.io就应该可以用。看了一下socket.io官网,是有AS版本的。这样用pomelo android那个客户端版本应该是可以移植AS3版本。我对android不熟,有兴趣的朋友咱们可以一起做。

appfog的介绍中db只看到mysql,其他的数据库服务似乎以前是beta版本,现在是不是取消了?

看了一下FlashSocket.IO, 是封装了web-socket,然后通过JS bridge来实现的,这样的问题:1)flash AS3本身就支持socket和xmlsocket,结合JAVA服务器做的网游项目很多了,本身socket功能就很强大,用websocket舍近求远。 2)现在AS3的一个重点应用就是用于移动设备的AIR,external.call这种bridge方式也没法用啊

我不太清楚socket.io跟AS的socket的差别,通信有什么问题,即便存在协议上的差异,通过JS做个node端的通信代理也应该很容易解决。因为flash跟node.js直接就可以进行socket通信。

pomelo可以连接mongoDB的,flash客户端应该马上会推出。

您好,请问您有没有关于pomelo使用mongodb的小demo啊。require mongodb的代码要写在app.js里面么?然后在哪里调用呢?chat/chatHandler.js么?

为啥说pomelo连接mongoDB? 其实这跟pomelo一点关系都没有,pomelo只是框架, 只要node.js有能力连mongodb就可以了。

mongodb的client上github上有,demo应该很多

另外pomelo的flash客户端D-Deo在维护, 现在应该成熟了。

https://github.com/D-Deo/pomelo-flash-tcp

当然可以!Pomelo 是一个高性能的 Node.js 游戏服务器框架,它非常适合用于开发实时多人游戏。关于你的问题,我会一一解答。

Pomelo 是否支持 MongoDB

Pomelo 本身并不直接提供对 MongoDB 的支持,但你可以通过扩展来实现这一点。Pomelo 支持多种数据存储方式,你可以使用 pomelo-redis 或者自定义适配器来接入 MongoDB。以下是一个简单的示例:

// 自定义适配器,将 MongoDB 与 Pomelo 集成
const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/pomelo', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

const UserSchema = new mongoose.Schema({
  username: String,
  password: String
});

const UserModel = mongoose.model('User', UserSchema);

module.exports = {
  findUser(username, callback) {
    UserModel.findOne({ username }, (err, user) => {
      if (err) return callback(err);
      callback(null, user);
    });
  }
};

在 AppFog 或 Heroku 上部署

在 AppFog 或 Heroku 上部署 Pomelo 服务器,你需要确保正确配置环境变量,并且创建适当的启动脚本。以下是一个简单的 Procfile 示例:

Procfile

web: node app.js

然后确保在部署前安装所有依赖项,并设置好环境变量(例如数据库连接字符串)。

客户端如何使用 AS3 连接 Pomelo

为了在 AS3 中连接 Pomelo 服务器,你可以使用 WebSocket 库。这里有一个简单的示例:

客户端代码(AS3)

import flash.net.Socket;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.utils.ByteArray;

var socket:Socket = new Socket();
socket.addEventListener(Event.CONNECT, onConnect);
socket.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
socket.connect("your.server.address", 3010); // 确保使用正确的端口号

function onConnect(event:Event):void {
    trace("Connected to server");
    var message:ByteArray = new ByteArray();
    message.writeUTFBytes("hello");
    socket.writeBytes(message, 0, message.length);
}

function onIOError(event:IOErrorEvent):void {
    trace("Connection error");
}

服务器代码(Node.js + Pomelo)

app.configure('production', function () {
  app.set('port', process.env.PORT || 3010);
  app.set('host', process.env.HOST || '0.0.0.0');
});

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(express.static(path.join(__dirname, 'public')));

app.get('/', function(req, res){
  res.render('index');
});

app.set('socketio', io.listen(app.listen(app.get('port'))));

以上代码展示了如何在 AS3 客户端中使用 WebSocket 连接到 Pomelo 服务器。希望这些信息对你有所帮助!如果你有任何进一步的问题,请随时留言。

回到顶部