微信小程序中实现一对多发消息详解及实例代码

微信小程序中各个界面之间的传值和通知比较蛋疼。所以模仿了iOS中的通知中心,在微信小程序中写了一套类似的通知中心。

通知中心可以做到:1对多发消息,传递object。使用十分简洁。

使用时,在需要接收消息的界面注册一个通知名。然后在需要发消息的界面post这个通知名就可以了。可以在多个界面注册同一个通知名。这样就可以1对多发消息。

使用方法:

1:在app.js中引用notification.js

var notificationCenter = require('/utils/notification.js'); //这里请改为你的绝对路径

2:在app.js中添加:

App({

onLaunch: function (){

this.notificationCenter = notificationCenter.center();

},

notificationCenter:null,

})

3: 接收通知的page.js中注册

PageA.js:

var app = getApp();

Page({

onLoad:function(options){

app.notificationCenter.register("一个通知名称",this,"didReceviceAnyNotification");

},

didReceviceAnyNotification:function(name,content){

console.log("接收到了通知:",name, content);

},

})

4: 发出通知的page.js中

PageB.js 任意函数

var app = getApp();

Page({

anyFunction:function(){

app.notificationCenter.post("通知名称",{

//任意通知object

}) ;

},

})

实现:

var notificationCenter = {

notificationCenter:{},

// 向通知中心注册一个监听者。

// name: 监听的通知名称

// observer: 监听者

// action: 监听者收通知时调用的方法名,

// func: 监听者收到通知时调用的函数,

// action func 2选1

register:function(name,observer,action,func){

if (!name || !observer) return;

if (!action && !func) return;

console.log("注册通知:",name,observer);

var center = this.notificationCenter;

var objects = center[name];

if (!objects){

objects = [];

}

this.remove(name,observer);

objects.push({

observer:observer,

action:action,

func:func

});

center[name] = objects;

},

// 从通知中心移除一个监听者

remove:function(name,observer){

if (!name || !observer) return;

var center = this.notificationCenter;

var objects = center[name];

if (!objects){

return;

}

var idx;

var object;

for(idx = 0;idx

var obj = objects[idx];

if (obj.observer == observer){

object = obj;

break;

}

}

if (object){

objects.splice(idx,1);

}

center[name] = objects;

},

// 通过通知中心发出通知

// name: 通知名称

// notification: 通知内容

post:function(name,notification){

if (!name) return;

console.log("准备发出通知:",name,notification);

var center = this.notificationCenter;

var objects = center[name];

if (!objects){

objects = [];

}

objects.forEach(function(object){

var observer = object.observer;

var action = object.action;

var func = object.func;

if (observer && action){

func = observer[action];

}

func(notification);

});

console.log("完成向 ",objects.length," 个监听者发出通知:",name);

}

}

function center(){

return notificationCenter;

}

module.exports.center = center;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多微信小程序实现一对多发消息相关文章请关注PHP中文网!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php一对多聊天程序代码,微信小程序实现一对多发消息相关推荐

  1. GetWeApp聊天室 代码(微信小程序)

    说明: 实现聊天功能,特色: 使用webSocket实现即时通信 发送和显示表情 数据接口: 数据接口 目录结构&#

  2. 自从自己搭建了这套精选壁纸聊天背景的微信小程序,我的手机背景图再都没重复过

    前不久刚学习完如何使用hbuilder还有微信开发者工具的简单应用,借着对拥有自己搭台出来的小程序的渴望,在网上物色了很久,终于找到一套比较好用切可用的手机壁纸小程序. 先看看运行起来的样子吧 运行D ...

  3. 微信小程序开发教程||微信小程序 小程序简介||微信小程序 开始||微信小程序 小程序代码构成

    微信小程序 小程序简介 小程序简介 小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验. 小程序技术发展史 ​小程序并非凭空冒出来的一个概念.当微信中的 ...

  4. 【微信小程序】关于H5跳转微信小程序、微信小程序跳转H5、微信小程序跳转微信小程序的实现方法

    0 说明 业务提出需求,要实现H5跳转微信小程序的需求,在浏览器.微信环境下,都能通过H5跳转进入小程序. 另外,本文也将微信小程序跳转到H5,以及微信小程序跳转到微信小程序的方法进行汇总. 对于,微 ...

  5. 【小程序】微信小程序开发技巧实用手册(自己做笔记用)

    [Css]Css和Html常用设计实例参考笔记(自己开发项目用)_敦厚的曹操的博客-CSDN博客_html和css的项目实例一.左右居中1.div等块元素左右居中margin: 0 auto;marg ...

  6. PHP:【微信小程序】初识微信小程序,微信小程序配置

    PHP:[微信小程序]初识微信小程序,微信小程序配置 一.介绍 小程序提供了一个简单.高效的应用开发框架和丰富的组件及 API,帮助开发者在微信中开发具有原生 APP 体验的服务 小程序是一种全新的连 ...

  7. 《微信小程序》微信小程序用java后台连接数据库进行操作。

    微信小程序与Java后台的通信 一.写在前面 最近接触了小程序的开发,后端选择Java,因为小程序的代码运行在腾讯的服务器上,而我们自己编写的Java代码运行在我们自己部署的服务器上,所以一开始不是很 ...

  8. (微信小程序)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好

    转载地址:(微信小程序)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好 转载请注明出处 作者:Happy王子乐 个人网站(整理 ...

  9. 【小程序】微信小程序云开发笔记详细教程(建议收藏)

    1- 前言 1.1 微信云开发是什么? 微信云开发是微信团队联合腾讯云推出的专业的小程序开发服务. 开发者可以使用云开发快速开发小程序.小游戏.公众号网页等,并且原生打通微信开放能力. 开发者无需搭建 ...

最新文章

  1. GTK+重拾--08 GTK+中的对话框
  2. 第三章 线性代数回顾-机器学习老师板书-斯坦福吴恩达教授
  3. c++内存管理-内存顺序
  4. ASP.NET MVC中ViewData、ViewBag和TempData
  5. html与markdown互相转换
  6. JavaScriptSerializer 类
  7. 各种 IntelliJ IDEA 酷炫插件推荐
  8. SpringIOC控制反转之XML配置
  9. 项目集成腾讯移动直播总结--后端
  10. IPSEC VPN动态配置(示例)
  11. 我的世界python指令_我的世界Minecraft从0开始学指令。
  12. logo版权注册流程
  13. 网络安全,非对称加密,对称加密和非对称加密的区别
  14. 高一英语计算机课文,高一英语课本
  15. 翻翻git之---溜的飞起的加载效果AVLoadingIndicatorView
  16. l1300打印机纸进不去_爱普生打印机不进纸该怎么解决?
  17. 于东来:我赚大钱的秘诀在于分掉80%利润
  18. Django serializers.serialize 的使用
  19. 如何选择 HTML5 游戏引擎
  20. WordPress建站详细流程,WordPress入门

热门文章

  1. 关于jasmine里debugElement.query和fixture.detectChanges的依赖关系
  2. Angular自定义structural指令的实例化过程以及set方法的调用
  3. 几种常用的排序算法之JavaScript实现
  4. 如何查询SAP Cloud for Customer系统升级和维护时间
  5. How is new Appoinment id generated in my task followup scenario
  6. SAP Cloud for Customer跨component的跳转
  7. SAP云平台里UI5应用的build日志
  8. 解决BDOC structure里header和data structure里数据格式不一致的问题
  9. 关于SAP UI5 CRM Reuse Fiori应用的代码审查
  10. SAP Gigya(SAP Customer Data Cloud)的数据中心