1 | # 如何开发控制器
|
2 |
|
3 | ## 控制器的组织结构
|
4 |
|
5 | 在 app/control 目录下存放所有用户级控制器, **按照节点类型分类**,目前包括两个类别:
|
6 | - CoreOfIndex: 门户服务器专用控制器
|
7 | - CoreOfLogic: 逻辑服务器专用控制器
|
8 |
|
9 | 每个控制器都包含一个单独的类,这些类都是 facade.Control 的子类。
|
10 | 控制器类名和文件名保持一致
|
11 |
|
12 | ## 控制器的外部接口
|
13 |
|
14 | 控制器外部接口名称的组织方式为 `${className}.${funcName}`,例如,test.js 包含 test 类,其 notify 成员方法的外部接口是 'test.notify', 调用方法如下所示:
|
15 |
|
16 | ```js
|
17 | //引入工具包
|
18 | let {gameconn} = require('gamegoldtoolkit');
|
19 |
|
20 | //创建连接器对象
|
21 | let remote = new gameconn(
|
22 | gameconn.CommMode.ws, //使用 WebSocket 连接方式
|
23 | {
|
24 | "UrlHead": "http", //协议选择: http/https
|
25 | "webserver": {
|
26 | "host": "127.0.0.1", //远程主机地址
|
27 | "port": 9901 //远程主机端口
|
28 | },
|
29 | "auth": {
|
30 | "openid": "18681223392", //用户标识
|
31 | "openkey": "18681223392", //和用户标识关联的用户令牌
|
32 | "domain": "tx.IOS", //用户所在的域,tx是提供登录验证服务的厂商类别,IOS是该厂商下的服务器组别
|
33 | }
|
34 | }
|
35 | )
|
36 | .setFetch(require('node-fetch')); //设置node服务端环境下的fetch函数,只在node服务端环境中执行,浏览器环境自带fetch函数
|
37 |
|
38 | remote.fetching({func: "test.notify", msg: 'helloworld'}, msg => {
|
39 | console.log(msg);
|
40 | });
|
41 | ```
|