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

Golang语言社区 · · 785 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

      大家好,我是彬哥,本节给大家讲下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语言社区

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Golang语言社区

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

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

785 次点击  
加入收藏 微博
1 回复  |  直到 2018-12-31 19:39:57
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传