Melody —— Go 语言的微型 WebSocket 框架

Melody 是一个 Go 语言的微型 WebSocket 框架,基于 github.com/gorilla/websocket 开发,主要特性:

  • 接口简单易用,类似 net/http 或者 Gin
  • 提供给所有广播以及给选择连接会话广播的简单途径
  • 消息缓冲对并发写是安全的
  • 可自动处理 ping/pong 和会话超时

一个简单的实例:

https://yqfile.alicdn.com/f9d44ad5b248fc3b5ab25fa983e42f9e225162c3.png" >

代码:

package main

import (
    "github.com/olahol/melody"
    "github.com/gin-gonic/gin"
    "net/http"
)

func main() {
    r := gin.Default()
    m := melody.New()

    r.GET("/", func(c *gin.Context) {
        http.ServeFile(c.Writer, c.Request, "index.html")
    })

    r.GET("/channel/:name", func(c *gin.Context) {
        http.ServeFile(c.Writer, c.Request, "chan.html")
    })

    r.GET("/channel/:name/ws", func(c *gin.Context) {
        m.HandleRequest(c.Writer, c.Request)
    })

    m.HandleMessage(func(s *melody.Session, msg []byte) {
        m.BroadcastFilter(msg, func(q *melody.Session) bool {
            return q.Request.URL.Path == s.Request.URL.Path
        })
    })

    r.Run(":5000")
}

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-08-01 01:07:18

Melody —— Go 语言的微型 WebSocket 框架的相关文章

ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

原文:ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库 前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET--"Jws.Mono".由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间来研究这个,小蝶惊鸿的博客又激起了我的兴趣,我花了四天的时间,终于在Liunx上跑起了属于我自己的应用程序,其中数据库使用到了PostgreSQL数据库.对于数据库的选用

Gin —— Go 语言的高性能 Web 框架

Gin 是一个用 Go 语言开发的 Web 框架,提供类 Martini 的 API,但是性能更好.因为有了 httprouter 性能提升了 40 倍之多. $ cat test.go package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.GET("/", func(c *gin.Con

PFQ —— 支持多语言的高性能网络监控框架

PFQ 是一个支持多语言的网络框架,主要用于 Linux 操作系统下进行高效的包捕获和传输,适用于多核处理器系统中的网络监控框架. PFQ 专门为多核处理器而优化,包括对多个硬件队列的网络设备优化,支持任意网络设备驱动,并提供一个脚本用来加速和优化对设备数据的获取. 该框架可用来开发高性能的应用,使用 C.C++11 和 Haskell .此外 PFQ 还包含一个纯函数语言 PFQ/lang . PFQ/lang 灵感来自于 Haskell 可以用来创建运行在内核空间中网络设备驱动之上的小应用程

语言 java-跪求jfinal框架做的三级下拉框联动的demo 和数据库连接的

问题描述 跪求jfinal框架做的三级下拉框联动的demo 和数据库连接的 语言:java 数据库:sql 框架:jfinal 实现三级下拉框联动 求jfinal 大神 跪求了

Kitty:Python语言编写的Fuzzing框架

Kitty是一款用Python语言编写的开源的模块化.可扩展的模糊测试框架,灵感来源于OpenRCE's Sulley 和 Michael Eddington的 (现在为Deja Vu Security的) Peach Fuzzer . 目标 我们开始写Kitty的时候,目的是帮助我们fuzz特殊的目标.也就就是运行于非TCP/IP通道上的私有和内部协议.一个通用.抽象的框架应该包含所有我们能想到的模糊测试过程中用到的所有通用功能,并且能方便用户扩展,以便用来攻击特定目标. 特性 心中有了这样的

go语言-安装go web框架revel时遇到问题,求指导

问题描述 安装go web框架revel时遇到问题,求指导 最近在学习go web 编程,看到目前学习资源较多的框架是revel框架.但是在安装revel时遇到问题. user@user-xubuntu:~/Go$ go get github.com/revel/revel package code.google.com/p/go.net/websocket: Get https://code.google.com/p/go/source/checkout?repo=net: dial tcp

选择使用c语言编写的phalcon框架

使用这个框架,我总结了如下几点考虑 1.这个框架速度快.纯c语言编写的框架,速度都比php框架快,省去了中间环节.当然,使用它不仅仅是性能考虑.因为如果为了解决php性能问题,完全可以有很多种方式,不仅仅是这种.比如做代码优化(加php代码加速器),像facebook加速php性能有开源的工具可以使用等等. 2.升级方便.市面上的tp.ci等框架,大家看着不爽,就自己把源码给修改了,造成升级版本困难.因为这些框架不是公司内部在维护.升级.是外面官方团队维护.所以一旦他们升级版本了,你修改过源码就

NodeJS 各websocket框架性能分析

For a current project at WhoScored, I needed to learn JavaScript, Node.js and WebSocket channel, after seven years of writing web applications with Java and Spring framework. We wanted an application that can send data to thousands of concurrent user

Python语言使用Django开发Web框架

Django Web框架简介 Django 项目是一个 python[1]定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来.Django 框架的核心组件有: 用于创建模型的对象关系映射为最终用户设计的完美管理界面一流的 URL 设计设计者友好的模板语言缓存系统.Django符合MTV架构 Django的安装 Django的安装有两种方法,具体可参考官网(https://www.djangoproject.com/download/),这里采用第二种方法,即Opt