Skip to content

Commit

Permalink
整理文档
Browse files Browse the repository at this point in the history
  • Loading branch information
bg5sbk committed Dec 7, 2015
1 parent 6ec2fec commit 3de5677
Showing 1 changed file with 37 additions and 47 deletions.
84 changes: 37 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,43 @@ link包核心由`Server`、`Session`、`CodecType`组成。`Server`和`Session`

`Encoder``Decoder`都可以选择性的实现`Dispose()`方法,`Session`关闭时将会尝试调用这个方法,这可以可以做到`Encoder``Decoder`的资源回收利用,内置的`BufioCodecType`就利用这个机制引入了`sync.Pool`来提高对象的重用性。

一些示例
=======

示例,创建一个使用Json作为消息格式的TCP服务端:

```go
srv, err := link.Serve("tcp", "0.0.0.0:0", link.Json())
```

示例,使用Bufio优化IO:

```go
srv, err := link.Serve("tcp", "0.0.0.0:0", link.Bufio(link.Json()))
```

示例,加入线程安全:

```go
srv, err := link.Serve("tcp", "0.0.0.0:0", link.ThreadSafe(link.Json()))
```

示例,把发送方式改为异步:

```go
srv, err := link.Serve("tcp", "0.0.0.0:0", link.Async(link.Json()))
```

示例,使用小端的`{packet, 4}`做分包协议,用Json作为消息格式:

```go
srv, err := link.Serve("tcp", "0.0.0.0:0",
link.Packet(4, 1024 * 1024, 4096, link.LittleEndian, link.Json()),
)
```

我是不会告诉你除了以上示例,阅读`all_test.go``example`目录下的代码也是很有帮助的!

内置类型
=======

Expand Down Expand Up @@ -211,53 +248,6 @@ func (e *MyEncoder) Encode(msg interface{}) error {

所以后来我删除了`Session`里面加锁的逻辑,引入了`ThreadSafe()`。在需要对收发过程进行加锁保护的时候可以用它。

一些示例
=======

示例,创建一个使用Json作为消息格式的TCP服务端:

```go
srv, err := link.Serve("tcp", "0.0.0.0:0", link.Json())
```

示例,使用Bufio优化IO:

```go
srv, err := link.Serve("tcp", "0.0.0.0:0", link.Bufio(link.Json()))
```

示例,加入线程安全:

```go
srv, err := link.Serve("tcp", "0.0.0.0:0", link.ThreadSafe(link.Json()))
```

示例,把发送方式改为异步:

```go
srv, err := link.Serve("tcp", "0.0.0.0:0", link.Async(link.Json()))
```

示例,把所有特性都加到一起(Async和ThreadSafe组合没有意义,这里只是纯炫技):

```go
srv, err := link.Serve("tcp", "0.0.0.0:0",
link.Async(link.ThreadSafe(link.Bufio(link.Json())),
)
```

示例,使用`{packet, 4}`做消息分包:

```go
srv, err := link.Serve("tcp", "0.0.0.0:0",
link.Packet(4, 1024 * 1024, 4096, link.LittleEndian, link.Json()),
)
```

俄罗斯套娃 :)

我是不会告诉你除了以上示例,阅读`all_test.go``example`目录下的代码也是很有帮助的!

消息分发
=======

Expand Down

0 comments on commit 3de5677

Please sign in to comment.