Comments (3)
我实现了这个。首先在每个公众号的开发者配置那,你配置的地址后面加个参数。比如你要监听的地址是:http://baidu.com
,那就设置成:http://baidu.com?originId=gh_xxxxx
,这个originId
是公众号的原始id。然后,在服务端,初始化所有公众号api,
// accounts 是所有的公众号配置
forEach(accounts, ({ originId, appid, aes, token }) => {
allApi[originId] = originWechat({
appid: appid,
encodingAESKey: aes,
token: token
});
});
export const getApi = ({ originId }) => allApi[originId];
实现中间件:
middleware.js
import logger from 'bunyan';
import { getApi } from 'path/to/initial/all/accounts';
const wechat = () => {
return async (ctx, next) => {
const { originId } = ctx.request.query;
const wechat = getApi({ originId });
const fn = wechat.middleware;
const api = fn.apply(wechat, [(message) => {
logger.info({ message }, 'wechat push message');
switch (message.MsgType) {
case 'event':
/* 延迟100ms执行,立即响应微信服务器,避免出现服务不可用的情况,以及重复推送事件的情况 */
setTimeout(() => logger.info('=====hahah===='), 100);
break;
case 'text':
case 'audio':
break;
}
return 'hehe';
}]);
await api(ctx, next);
};
};
export default wechat;
最后,在app.js
中:
import wechat from 'path/to/middleware';
app.use(wechat());
from co-wechat.
#28 看看这个。
http://url/wechat?appid=1
http://url/wechat?appid=2
app.use(async function (ctx, next) {
ctx.wx_token = getToken(ctx.query.appid);
// or
ctx.wx_cryptor = getCryptor(ctx.query.appid);
});
app.use(wechat(config).middleware(async function (message) {
// TODO
}));
from co-wechat.
已经发布了。
from co-wechat.
Related Issues (20)
- 'encrypt_type' of undefined HOT 2
- 请问co-wechat2.x版本只能运行在node7.x或更高版本? HOT 1
- 请问关于路由的问题 HOT 3
- 2.1.0处理xml被提前处理的问题 HOT 2
- koa2.x ctx.request.body === 'string' 而是object HOT 1
- 如何在handle中获取ctx上下文,现在只传递了一个message HOT 5
- 请问eggjs我想动态传入配置信息,如何传呢?【使用的是微信】 HOT 3
- 集成到eggjs 1.8,接收消息报错 Can't set headers after they are sent.
- 作者你好 HOT 6
- 与egg配合如何调用service HOT 2
- egg.js 的集成问题 HOT 4
- Use template-literal instead of EJS HOT 4
- Use template-literal instead of EJS
- eggjs中使用时,如何在midlleware中获取原始的上下文请求 HOT 3
- Unclosed root tag HOT 1
- koa2安装使用这个封装库后所有路由访问都是提示Invalid signature HOT 8
- 能否支持微信硬件平台相关接口
- Non-whitespace before first tag HOT 1
- 请教下一个事件消息bug HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from co-wechat.