美文网首页彬哥Go语言笔记Golang语言社区
彬哥笔记 --15 Go语言 游戏服务器网络 如何处理?

彬哥笔记 --15 Go语言 游戏服务器网络 如何处理?

作者: Golang语言社区 | 来源:发表于2018-12-31 11:01 被阅读37次

          大家好,我是彬哥,本节给大家讲下go语言服务器游戏网络处理相关,抛砖引玉了,主要是针对Go语言游戏服务器开发网络连接如何处理。

    首选我们来看下LollipopGo v1.0.20181225 版本的处理,代码如下:

    NetBase.go
    package main
    
    import (
        "encoding/json"
        "fmt"
        "Proto"
        "Proto/Proto2"
        "code.google.com/p/go.net/websocket"
    )
    
    func wwwGolangLtd(ws *websocket.Conn) {
        data := ws.Request().URL.Query().Get("data")
        NetDataConntmp := &NetDataConn{
            Connection:    ws,
            StrMd5:        "",
            MapSafe:       M,
            MapSafeServer: MServer,
        }
        NetDataConntmp.PullFromClient()
    }
    

    NetCtl.go 处理 如下:

    func (this *NetDataConn) PullFromClient() {
        for {
            var content string
            if err := websocket.Message.Receive(this.Connection, &content); err != nil {
                break
            }
            if len(content) == 0 || len(content) >= 4096 {
                break
            }
            go this.SyncMeassgeFun(content)
        }
    }
    

    大家从代码结构上完全可以看出,LollipopGo架构的网络处理是一个请求一个goroutine;而并没有像其他Go游戏服务器框架或者传统的c++游戏框架一个发送进程、一个接受进程;首先从语言的特性按照自己的需求来做是最好的,同时Go语言的语言特性及Go语言的网络底层实现希望初学go语言的同学可以了解下。

          每天坚持学习1小时Go语言,大家加油,我是彬哥,下期见!如果文章中不同观点、意见请文章下留言或者关注下方订阅号反馈!


    社区交流群:221273219
    Golang语言社区论坛 :
    www.Golang.Ltd
    LollipopGo游戏服务器地址:
    https://github.com/Golangltd/LollipopGo
    社区视频课程课件GIT地址:
    https://github.com/Golangltd/codeclass


    Golang语言社区

    相关文章

      网友评论

        本文标题:彬哥笔记 --15 Go语言 游戏服务器网络 如何处理?

        本文链接:https://www.haomeiwen.com/subject/ufeilqtx.html