昨天因为需要开始学习Pomelo 做H5游戏的服务端。

因为个人学习习惯,我从来不适合去跟着文档看。一般我直接是看下大概的API,但是Pomelo的API全部都是英文的。

昨天我就告诉自己用一下午时间去做一个最基本的通信功能的DEMO。

安装NODE.JS  Phython VS 一切就绪之后就开始了。

转到目录下面,输入命令 就会创建一个Pomelo项目 ,之后会要求选择 个人理解就是通信方法把 。

选择好之后就会生成项目目录

目录结构就是这样的。

一开始我以为这样就可以了啊,但是后来发现不对 总感觉少了点什么,应该是基础包吧?||环境包?个人理解就是支持程序跑起来的一些基础类库。

直接运行他,就可以了。

接下来我就瞅这个项目目录结构 ,当然 我值看Game-server web-server没大看 ,不过感觉大致差不大多吧。

先看了下app.js --

app.configure('production|development', 'connector', function(){//其实我不大了解这个方法的具体实现方式,但是我觉得他的功能大概就是设置Connector的连接方式。
app.set('connectorConfig',
{
connector : pomelo.connectors.hybridconnector,
heartbeat : 3,
useDict : true,
useProtobuf : true
});
});
  connector : pomelo.connectors.hybridconnector,【进去看他的代码】

Pomelo.connectors.__defineGetter__('sioconnector', load.bind(null, './connectors/sioconnector'));

Pomelo.connectors.__defineGetter__('hybridconnector', load.bind(null, './connectors/hybridconnector'));

Pomelo.connectors.__defineGetter__('udpconnector', load.bind(null, './connectors/udpconnector'));
Pomelo.connectors.__defineGetter__('mqttconnector', load.bind(null, './connectors/mqttconnector'));

他设置了几个几个常量咯 根据这个方法选择通信方式。

  设置完这些,然后我就开始琢磨怎么连上我的第一个WebSocket服务器,哪里都不用改直接跑起来看下把 ,先连接上了再说下一步。

  

  其实应该去设置server.json的 里面可以设置 服务端口跟 客户端端口的,但是我直接用项目创建时候默认的把,上面有个clientPort

  那个是客户端连接的端口,连接上去之后

  

我用的是EGRET引擎,所以在论坛里直接找了Pomelo客户端用的包,用上了 ,这样 就连接上去了 。加下来才是终点

最简单的通信,先看下客户端我是这么些的

  

  this.socket.request("connector.entryHandler.join", {//requst(@网友说这叫路由地址,在我看来这个参数就是写Connector(服务器路由?每个路由单独处理属于自己的工作 分工明确提高效率?).文件名(为毛不是类名).方法名--。那个在,@参数,@回调//这个回调 ,不是可以说是通信完成的回调,但也不能说完全就是,因为这个回调干不干活触不触发还要看服务端)
"uid":UID,
"rid":RID ,
"target": TAG
}, function (result) {
console.log(result);
}); }) /**
上面那是客户端调用湖物端的方法,他那写好了 就要在湖物端开始写要触发的方法了 **/
Handler.prototype.join = function (msg, session, next) {
var self = this;                    
console.log(msg.uid);  
var id = msg.uid + "*" + msg.rid;
console.log(id);    msg就是前端发过来的msg var sessionService = self.app.get('sessionService');
next(null, {
code: 500,
error: true
});
return; var chanel = this.ChannelServers.getChannel("pomelo", true); //关键就是这个Chanl啊 chanl就是一个对象,我理解就是一个麻将桌,你给他创建编号 就能王这个麻将桌里面放人进去,嘿嘿 。所有用户触发JOIN的时候都会获取叫“pomelo”的麻将桌,然后把自己加进去 ,后面那个参数就是如果麻将桌还没创建 就创建一个新的
chanel.add(msg.uid, this.app.get('serverId'));//加入Chanel,UID的话 按正常的 应该是绑定sesson的uid 只是我把session-uid放在后面去绑定 所以就,这样就区分了第二个参数 是绑定的是SESSION uid 还是每个玩家app里面那个id ,答案是后者
var rid = msg.rid;
var uid = msg.uid;
msg.sid = msg.rid;
session.bind(uid);
session.set('rid', rid);
session.push('rid', function (err) {
});   发送聊天消息-服务端   
Handler.prototype.Chatto = function (msg, session, next) {
var uid = session.uid;
var sid = session.get("rid");
var uid = session.uid; console.log("uid=" + uid + "--sid=" + sid);
var chanel = this.ChannelServers.getChannel("pomelo", true);
console.log(chanel.records);
next(null, {"msg": "uid=" + uid})
if (chanel.getMember(uid)) {
chanel.pushMessage("back", {"msg": "玩家:" + uid + "-->发布信息"});
}
}} 其实按功能上来说 就是通过Chanel去转发那些个你想要转发出去的信息 ,所以说套路是这样 更复杂的我也还没做过 ,但是复杂的 就是 很多简单的扣在一起换着玩法去写吧。

  

Pomelo实现最简单的通信-egret。的更多相关文章

  1. 使用Java实现简单串口通信

    最近一门课要求编写一个上位机串口通信工具,我基于Java编写了一个带有图形界面的简单串口通信工具,下面详述一下过程,供大家参考 ^_^ 一: 首先,你需要下载一个额外的支持Java串口通信操作的jar ...

  2. .NET Core微服务之路:利用DotNetty实现一个简单的通信过程

    上一篇我们已经全面的介绍过<基于gRPC服务发现与服务治理的方案>,我们先复习一下RPC的调用过程(笔者会在这一节的几篇文章中反复的强调这个过程调用方案),看下图

  3. (原创)如何使用boost.asio写一个简单的通信程序(一)

    boost.asio相信很多人听说过,作为一个跨平台的通信库,它的性能是很出色的,然而它却谈不上好用,里面有很多地方稍不注意就会出错,要正确的用好asio还是需要花一番精力去学习和实践的,本文将通过介 ...

  4. C#串口介绍以及简单串口通信程序设计实现

    C#串口介绍以及简单串口通信程序设计实现 周末,没事干,写个简单的串口通信工具,也算是本周末曾来过,废话不多,直接到主题 串口介绍 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口) ...

  5. Python网络编程02 /基于TCP、UDP协议的socket简单的通信、字符串转bytes类型

    Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes类型 目录 Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes ...

  6. 基于Tcp协议的简单Socket通信实例(JAVA)

    好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...

  7. VUE简单组件通信

    [x] 1.prop组件通信 1.简单理解 2.多层嵌套 [x] 2.使用ref进行组件通信 [x] 3.$emit组件通信 1.prop组件通信 1.简单理解 有点类似于应式的感觉,我不管你要不要只 ...

  8. (原创)如何使用boost.asio写一个简单的通信程序(二)

    先说下上一篇文章中提到的保持io_service::run不退出的简单办法.因为只要异步事件队列中有事件,io_service::run就会一直阻塞不退出,所以只要保证异步事件队列中一直有事件就行了, ...

  9. python socket和简单tcp通信实现

    python 服务端和客户端的简单交互 TCP服务端: 1 创建套接字,绑定套接字到本地IP与端口 s = socket.socket(socket.AF_INET,socket.SOCK_STREA ...

随机推荐

  1. BZOJ3715: [PA2014]Lustra

    3715: [PA2014]Lustra Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 237  Solved: 149[Submit][Status ...

  2. 进程创建函数fork()、vfork() ,以及excel()函数

    一.进程的创建步骤以及创建函数的介绍 1.使用fork()或者vfork()函数创建新的进程 2.条用exec函数族修改创建的进程.使用fork()创建出来的进程是当前进程的完全复制,然而我们创建进程 ...

  3. loadrunner打不开ie&ie默认浏览器设置方法

    loadrunner使用过程中频繁的出现问题,出现次数最多的就是lr打不开ie,或者ie一闪就关闭了,问题出在我默认浏览器的设置上,因为我原先并没有成功设置ie为默认浏览器.这是一个无意识的错误,我以 ...

  4. leetcode First Missing Positive hashset简单应用

    public class Solution { public int firstMissingPositive(int[] A) { HashSet<Integer> hash=new H ...

  5. 《University Calculus》-chape8-无穷序列和无穷级数-基本极限恒等式

    基于基本的极限分析方法(诸多的无穷小以及洛必达法则),我们能够得到推导出一些表面上看不是那么显然的式子,这些极限恒等式往往会在其他的推导过程中用到,其中一个例子就是概率论中的极限定理那部分知识.

  6. Kong for Enterprise | Kong - Open-Source API and Microservice Management Layer

    Kong for Enterprise | Kong - Open-Source API and Microservice Management Layer undefined

  7. (组合数学3.1.1.1)POJ 1146 ID Codes(字典序法)

    /* * POJ_1146.cpp * * Created on: 2013年10月8日 * Author: Administrator */ #include <iostream> #i ...

  8. IOS学习之路十五(UIView 添加背景图片以及加边框)

    怎样给UIview添加背景图片呢很简单,就是先给view添加一个subview,然后设为背景图片: 效果图如下: 很简单直接上代码: //设置内容 self.myTopView.backgroundC ...

  9. iOS 应用程序本地化

    由于iPhone,iPad等苹果产品在全世界范围内的广泛流行,那么通过App Store下载应用程序的用户也将是来自世界范围的人们,所以开发者在开发过程中势必要考虑到不同语言环境下用户使用,好在iOS ...

  10. 遇到奇怪的C#/C/C++或者Java的bug可以去问问Coverity

    Coverity7月16号在博客Ask The Bug Guys中说以后遇到奇怪的C#/C/C++或者Java的bug可以给TheBugGuys@coverity.com发邮件.然后这些问题就会到一些 ...