go websocket 客户端突然关闭_golang websocket 客户端

本文介绍了如何使用Golang开发WebSocket客户端,以满足模拟多客户端进出游戏服务器的测试需求。由于Python打包成exe的不便,作者选择了Golang。文章分享了实现过程,包括通过登录接口分配服务器,与服务器建立WebSocket连接,并进行断开、进出房间等操作的示例代码。
摘要由CSDN通过智能技术生成

go 作为一个后端开发语言,一般都用来开发服务端。

网络上也很少有golang做socket 客户端的示例代码,因项目需求,我自己开发过相关功能,写出来跟大家一起学习一下!

有错误及需要改进的地方,还请指正!

项目需求:给测试提供一个能模拟多客户端进出游戏服务器的脚本,刚开始想使用python开发,比较是脚本语言首选,但是需要打包成exe,股使用go语言进行开发。

废话不多说,上代码:

package main

import (
	"encoding/json"
	"flag"
	"fmt"
	"io/ioutil"
	"log"
	"math/rand"
	"net/http"
	"net/url"
	"os"
	"os/signal"
	"strings"
	"sync"
	"time"

	"code.google.com/p/go.net/websocket"
)

func (l *LoginCheck) samplePost(pattern string, data map[string]interface{}) []byte {
    
	reqParams := make(map[string]interface{})
	reqParams["head"] = pattern
	dataBuf, err := json.Marshal(data)
	if err != nil {
    
		panic(err)
	}
	reqParams["data"] = string(dataBuf)
	bytesData, err := json.Marshal(reqParams)
	if err != nil {
    
		panic(err)
	}
	loginUrl := fmt.Sprintf("http://%s:%s/login", l.Host, l.Port)
	req, err := http.PostForm(loginUrl, url.Values{
    "msgdata": {
    string(bytesData)}})
	if err != nil {
    
		l.Info("error:%v", err)
		l.Exit(err.Error())
	}
	defer req.Body.Close()
	body, err := ioutil.ReadAll(req.Body)
	if err != nil {
    
		l.Info("error:%v", err)
		l.Exit(err.Error())
	}
	return body
}

//LoginYKResp 登录返回数据
type LoginYKResp struct {
    
	ErrCode int64  `json:"errcode"`
	Data    string `json:"data"`
}

//LoginData 登录返回数据内容
type LoginData struct {
    
	Hall  string `json:"hall&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值