Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

golis

golis 是一个简单的构建网络消息传输的脚手架,类型java中的mina,简单方便。

根据需要自定义消息报文格式,可以参考例子。

golis 通过IoFilterChain 处理定义好的IoFilter,类似mina。

##Quick Start ######Download and install

go get github.com/pojoin/golis

####example echoServer ######Create file echoServer.go

package main

import (
	"fmt"

	"github.com/pojoin/golis"
)

func main() {
	s := golis.NewServer()
	s.FilterChain().AddLast("test", &filter{})
	s.SetCodecer(&echoProtocalCodec{})
	s.RunOnPort("tcp", ":9090")
}

type echoProtocalCodec struct {
	golis.ProtocalCodec
}

func (*echoProtocalCodec) Decode(buffer *golis.Buffer, dataCh chan<- interface{}) error {
	bs, _ := buffer.ReadBytes(buffer.GetWritePos() - buffer.GetReadPos())
	buffer.ResetRead()
	buffer.ResetWrite()
	dataCh <- bs
	return nil
}

type filter struct{}

func (*filter) SessionOpened(session *golis.Iosession) bool {
	fmt.Println("session opened,the client is ", session.Conn().RemoteAddr().String())
	return true
}

func (*filter) SessionClosed(session *golis.Iosession) bool {
	fmt.Println("session closed")
	return true
}

func (*filter) MsgReceived(session *golis.Iosession, message interface{}) bool {
	if bs, ok := message.([]byte); ok {
		fmt.Println("received msg :", string(bs))
		replayMsg := fmt.Sprintf("echoServer received msg : %v", string(bs))
		session.Write([]byte(replayMsg))
	}
	return true
}

func (*filter) MsgSend(session *golis.Iosession, message interface{}) bool {
	return true
}

func (*filter) ErrorCaught(session *golis.Iosession, err error) bool {
	return true
}

######Build and run

    go run echoServer.go

######test

    telnet 127.0.0.1 9090

More examples

About

golis 是go语言写的一个简单的实现消息服务的脚手架,类似mina。

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.