kaca

消息发布/订阅系统
授权协议 MIT
开发语言 Google Go
所属分类 服务器软件、 JMS/消息中间件
软件类型 开源软件
地区 国产
投 递 者 花高爽
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

kaca 是用 golang 语言开发的基于 websocket 协议的消息发布/订阅系统。

服务器端代码:

package main

import (
        "github.com/scottkiss/kaca"
       )

func main() {
    //use true to set check origin
    kaca.ServeWs(":8080",true)
}

发布订阅客户端:

package main

import (
    "fmt"
    "github.com/scottkiss/kaca"
    "time"
   )

func main() {
          producer := kaca.NewClient(":8080", "ws")
          consumer := kaca.NewClient(":8080", "ws")
          consumer.Sub("say")
          consumer.Sub("you")
          consumer.ConsumeMessage(func(message string) {
                  fmt.Println("consume =>" + message)
                  })
      time.Sleep(time.Second * time.Duration(2))
          producer.Pub("you", "world")
          producer.Pub("say", "hello")
          time.Sleep(time.Second * time.Duration(2))
}

广播客户端:

package main

import (
    "fmt"
    "github.com/scottkiss/kaca"
    "time"
   )

func main() {
          producer := kaca.NewClient(":8080", "ws")
          consumer := kaca.NewClient(":8080", "ws")
          c2 := kaca.NewClient(":8080", "ws")
          c2.ConsumeMessage(func(message string) {
                  fmt.Println("c2 consume =>" + message)
                  })
          consumer.Sub("say")
          consumer.Sub("you")
          consumer.ConsumeMessage(func(message string) {
                  fmt.Println("consume =>" + message)
                  })
          time.Sleep(time.Second * time.Duration(2))
          producer.Broadcast("broadcast...")
          time.Sleep(time.Second * time.Duration(2))
})
}
  • 1075: KACA的数字排序 [排序] 时间限制: 1 Sec 内存限制: 128 MB 提交: 68 解决: 15 统计 题目描述 PIPA想让KACA给一串数进行排序。 KACA表示这是个简单的问题,然而当他看到这些数字后,顿时懵逼了。只见各种1234567890987654321……都是非常巨大的数字,但在他思考之后,还是选择接下了这个任务。 输入 第一行是一个整数TT ( 1≤T≤100

  • 问题 H: KACA的杨辉计数 时间限制: 1 Sec  内存限制: 128 MB 题目描述 KACA突然对杨辉三角起了兴趣,所以他观察了这些神奇的数字。 他发现杨辉三角的第3行有1个偶数,第5行有3个偶数,第6行却只有2个偶数。他发现这些偶数的分布似乎并不规则,所以他准备去数一数偶数的个数。然而他数了好久,发现这是个困难的任务,所以他想要求助ACMer。 输入 多组测试数据。 每一组占一行,只有

  • 1075: KACA的数字排序 [排序] 时间限制: 1 Sec   内存限制: 128 MB 提交: 13   解决: 2 [ 提交][ 状态][ 讨论版] 题目描述 PIPA想让KACA给一串数进行排序。 KACA表示这是个简单的问题,然而当他看到这些数字后,顿时懵逼了。只见各种1234567890987654321……都是非常巨大的数字,但在他思考之后,还是选择接下了这个任务。 输入 第一行

  • 传送门:1031 问题 B: KACA的数字排序 时间限制: 1 Sec   内存限制: 128 MB 提交: 9   解决: 3 题目描述 PIPA想让KACA给一串数进行排序。 KACA表示这是个简单的问题,然而当他看到这些数字后,顿时懵逼了。只见各种1234567890987654321……都是非常巨大的数字,但在他思考之后,还是选择接下了这个任务。 输入 第一行是一个整数T(1<=T<=1

  • 1075: KACA的数字排序 [排序] 时间限制: 1 Sec  内存限制: 128 MB 提交: 57  解决: 9  统计 题目描述 PIPA想让KACA给一串数进行排序。 KACA表示这是个简单的问题,然而当他看到这些数字后,顿时懵逼了。只见各种1234567890987654321……都是非常巨大的数字,但在他思考之后,还是选择接下了这个任务。 输入 第一行是一个整数TT ( 1≤T≤1

  • 问题 J: KACA的围棋入门 时间限制: 1 Sec 内存限制: 128 MB 题目描述 KACA从小就有一个成为围棋高手的梦想,然而他对围棋的棋路一窍不通。 为了体验围棋的乐趣,他在一个棋盘上摆了若干个白字和黑子,他规定黑子不能吃白子,但是白子可以吃黑子。也就是说,若棋盘上有某些黑子没有"气"(被白子完全围住或因为达到边界),则应当把黑子拿掉。反之若某些白子没有"气"(被黑子完全围住或达到边界

  • 问题 J: KACA的围棋入门 时间限制: 1 Sec  内存限制: 128 MB 提交: -  解决: -  题目描述 KACA从小就有一个成为围棋高手的梦想,然而他对围棋的棋路一窍不通。 为了体验围棋的乐趣,他在一个棋盘上摆了若干个白字和黑子,他规定黑子不能吃白子,但是白子可以吃黑子。也就是说,若棋盘上有某些黑子没有"气"(被白子完全围住或因为达到边界),则应当把黑子拿掉。反之若某些白子没有"

  • 题目描述 PIPA想让KACA给一串数进行排序。 KACA表示这是个简单的问题,然而当他看到这些数字后,顿时懵逼了。只见各种1234567890987654321……都是非常巨大的数字,但在他思考之后,还是选择接下了这个任务。 输入 第一行是一个整数TT ( 1≤T≤1001≤T≤100 ),代表有TT组测试数据。 每组数据第一行是一个整数nn ( 1≤n≤1001≤n≤100 ),代表有nn个数

 相关资料
  • 我是新的数据流和发布子工具在GCP。 需要将prem过程中的电流迁移到GCP。 当前流程如下: 我们有两种类型的数据馈送 Full Feed–其adhoc作业–完整XML的大小约为100GB(单个XML–非常复杂的一个–完整的数据–ETL作业处理此XML并将其加载到约60个表中) 单独的ETL作业用于处理完整提要。ETL作业过程完全馈送并创建负载就绪文件,所有表将被截断并重新加载 源系统每30分钟

  • 问题内容: 我是Redis pub / sub的新手。我在系统中有一个聊天功能,就像IM。所以我想使用redis pub / sub。在我检查了样本之后,大多数样本都是基于聊天室设计的。在我的系统中,我将在多个用户之间建立多个聊天室,例如: 所以,上面的几行是房间。我已经用如下的node.js实现了服务器; 如您所见,我正在为每个连接创建一个新的Redis订户。在其他聊天室示例中,redis订户客

  • 问题 你有一个基于线程通信的程序,想让它们实现发布/订阅模式的消息通信。 解决方案 要实现发布/订阅的消息通信模式, 你通常要引入一个单独的“交换机”或“网关”对象作为所有消息的中介。 也就是说,不直接将消息从一个任务发送到另一个,而是将其发送给交换机, 然后由交换机将它发送给一个或多个被关联任务。下面是一个非常简单的交换机实现例子: from collections import default

  • 微信文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.addTemplate.html 组合模板并添加至帐号下的个人模板库 $tid = 563; // 模板标题 id,可通过接口获取,也可登录小程序后台查看获取 $kidLi

  • 开普勒消息目前分为三大类:公告,告警和通知。 通知中根据不同的操作事件类型,分为十几个事件。每个事件都跟项目操作相关。便于接收项目操作变更的通知。 分类 事件 公告 Alarm 告警 Proclaim 通知 Build,Apply,Audit,Delete,Rollback,Logging,Reboot,Command,Storage,Extend... 订阅界面: 用户中心,点击头像,下拉菜单→

  • 简介 Redis 的列表类型键可以用来实现队列,并且支持阻塞式读取,所以 Redis 能够非常容易的实现一个高性能的优先队列。同时在更高层面上,Redis 还支持“发布/订阅”的消息模式,可以基于此构建一个聊天系统。 发布示例 发布(Publish)即将消息发布到频道中。示例代码: // 发送消息 Redis::publish('chan-1', 'Hello, World!'); // 发送消息

  • 找到要发消息的订阅号-“群发消息”-新建群发消息 1)根据内容选择发送图文消息、文字消息、图片消息和文件消息。 2)选择群发范围,全部用户或部分用户,选择部分用户时支持选择组织机构或成员。 3)支持从素材库中选择,或直接新建图文消息。以“新建图文消息”为例: 备注:“保存”只是保存在“素材管理”里,没有发送出去,如果既要保存又要发送,请点击“保存并发送”。 4)除了图文、图片、文字消息,订阅号还可

  • 主要内容:发布/订阅流程,常用命令汇总,基本命令应用Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为  channel。在 Redis 中,一个客户端可以订阅任意数量的 channel(可译为频道)。 消息多播:生产者生产一次消息,中间件负责将消息复制到多个消息队列中,每个消息队列由相应的消费组进行消费,这是分布式系统常用的