golang 捕鱼 h5游戏

项目地址:

https://github.com/dwg255/fish

说明:go语言 游戏,go捕鱼,高性能游戏服务端 golang开发的服务端编程简单,执行高效,有效利用多核资源,游戏server端为golang典型的应用场景之一。项目大量使用goroutine及channel,命名及注释清晰。

主要依赖包:

  • github.com/astaxie/beego 主要用到其logs包,监听http端口及处理请求使用golang自带的包 net/http
  • github.com/gorilla/websocket websocket连接及收发消息

项目目录说明:

  • common 公共包, 包含全局配置、生成全部牌型的方法、计算牌型以及客户端协议常量
    *监听的端口、日志级别、日志路径、存储路径等*
    
  • account *账号中心服务* 通过thrift rpc 提供账号注册,认证等服务
    • main 入口目录
    • common
    • service
  • client 捕鱼客户端静态资源目录
  • hall 捕鱼大厅
    • main 入口目录
    • common
    • controllers 控制器目录
    • router 路由目录
  • game * *处理游戏逻辑*
    • main 入口目录
    • common
    • controllers 控制器目录
    • router 路由目录
    • service 逻辑目录
func init() {      //生成pid文件,保存pid
    pidFileName := "pid"
    fileInfo, err := os.Stat(pidFileName)
    if err != nil {
        if os.IsNotExist(err) {
            err = os.Mkdir(pidFileName, os.ModePerm)
            fileInfo, _ = os.Stat(pidFileName)
        }
    }
    if fileInfo.IsDir() {
        pid := os.Getpid()
        pidFile, err := os.OpenFile(pidFileName+"/landlord.pid", os.O_RDWR|os.O_CREATE, 0766)
        if err != nil {
            logs.Error("open pidFile [%s] error :%v", pidFileName, err)
            return
        }
        err = pidFile.Truncate(0)  //清空数据

        _, err = io.WriteString(pidFile, strconv.Itoa(pid))
        if err != nil {
            logs.Error("write pid error :%v", err)
        }

        err = pidFile.Close()
        if err != nil {
            logs.Error("close pid file err: %v", err)
        }
    } else {
        logs.Error("pidFile [%s] is exists and not dir", pidFileName)
    }
}

更多代码详见 GitHub -service -room.go 文件内包含压测代码,已通过压测并稳定运行半年左右。

运行步骤:

1.下载源码:

git clone https://github.com/dwg255/fish

2.编译:

cd fish\
go build -o account.exe account\main\main.go account\main\init.go account\main\config.go
go build -o hall.exe hall\main\main.go hall\main\init.go hall\main\config.go
go build -o fish.exe game\main\main.go game\main\init.go game\main\config.go

3.解压客户端: ​ tar -zxvf fish.tar.gz /var/www/html/client/fish

4.配置nginx:

server {
        listen       80;
        server_name  fish.com;
        charset utf8;
        index index.html index.htm;
        location /qq {
            add_header Access-Control-Allow-Origin *;
            proxy_set_header X-Target $request_uri;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:9000;
        }
        location / {
            root /var/www/html/client/fish;
            add_header Access-Control-Allow-Origin *;
            expires 7d;
        }
    }
配置文件位置 /common/conf 内含redis配置和qq第三方登录配置,请自行修改。

5.在线示例: ​ http://fish.blzz.shop ​

License

This project is released under the terms of the MIT license. SeeLICENSE for more information or see https://opensource.org/licenses/MIT.

5.运行截图:

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章