猜拳小程序(go+websocket+redis+mysql)

猜拳小程序(go+websocket+redis+mysql)

2021-03-16
¥ 0 终身VIP免费 升级终身VIP
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 网站建设 模板修改 源码安装 LOGO设计 图片设计
猜拳小程序(go+websocket+redis+mysql)
最近更新 2021年03月16日
资源编号 19177

猜拳小程序(go+websocket+redis+mysql)

郑重承诺丨总裁主题提供安全交易、信息保真!
增值服务:
安装指导
环境配置
二次开发
网站建设
模板修改
源码安装
¥ 0 (终身VIP免费 升级终身VIP开通VIP尊享优惠特权
立即下载 升级会员 最新活动
详情介绍

猜拳小程序(go+websocket+redis+mysql)

本文环境基于centOS6.5

安装go1.8

下载go安装包,解压到/usr/local/,
[AppleScript] 纯文本查看 复制代码
?
1
2
3
4
cd /usr/local/src
wget [url=http://golangtc.com/static/go/1.8/go1.8.linux-amd64.tar.gz]http://golangtc.com/static/go/1.8/go1.8.linux-amd64.tar.gz[/url]
tar -zxvf go1.8.linux-amd64.tar.gz
mv go ../
设置环境变量,GOROOT和GOPATH
GOROOT就是go的安装路径
GOPATH
go install/go get和 go的工具等会用到GOPATH环境变量.
GOPATH是作为编译后二进制的存放目的地和import包时的搜索路径 (其实也是你的工作目录, 你可以在src下创建你自己的go源文件, 然后开始工作)。
GOPATH之下主要包含三个目录: bin、pkg、src
bin目录主要存放可执行文件; pkg目录存放编译好的库文件, 主要是*.a文件; src目录下主要存放go的源文件
不要把GOPATH设置成go的安装路径,
GOPATH可以是一个目录列表, go get下载的第三方库, 一般都会下载到列表的第一个目录里面
需要把GOPATH中的可执行目录也配置到环境变量中, 否则你自行下载的第三方go工具就无法使用了, 操作如下:
export $PATH:$GOPATH/bin
在/var/下新建go-project作为工作目录,
综合以上,做如下操作:
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
vi /etc/profile
GOROOT=/usr/local/go
export GOROOT
PATH=$PATH:$GOROOT/bin
GOPATH=/var/go-project
PATH=$PATH:$GOPATH/bin
export PATH
source /etc/profile
go version
go version go1.8 linux/amd64

测试是否安装成功

新建一个hello.go文件
[AppleScript] 纯文本查看 复制代码
?
1
2
3
4
5
6
7
package main
import “fmt”
func main() {
    fmt.Printf(“hello, world\n”)
}
通过 go 工具运行它
[AppleScript] 纯文本查看 复制代码
?
1
2
go run hello.go
hello, world
看到了“hello, world”信息,那么Go已被正确安装。

下载官方websocket包

使用的golang官方的net包下面的websocket,地址:
https://github.com/golang/net
go get github.com/golang/net
其中有一些注意事项:
Golang 官方的子仓库,应该使用 import “golang.org/x/net/websocket” 这种方式导入,通过 go
get 方式下载。如果使用 git clone,clone下来的目录,也应该使用
src/golang.org/x/net/websocket 这样的目录,所以做法就特别蛋疼
要先
go get github.com/golang/net/websocket
然后
mv github.com/golang/net/websocket golang.org/x/net/websocket
然后import的时候用 golang.org/x/net/websocket
特别的蛋疼,难道是不想人用github上面的?因为上面的不是稳定版本
于是,将/var/go-project/src/github.com/golang/net重命名成了/var/go-project/src/golang.org/x/net
然后,go install golang.org/x/net/websocket
简单实现websocket广播的server端代码(server.go):
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package main
import (
    “golang.org/x/net/websocket”
    “fmt”
    “log”
    “net/http”
)
var (
    JSON          = websocket.JSON              // codec for JSON
    Message       = websocket.Message           // codec for string, []byte
    ActiveClients = make(map[ClientConn]string) // map containing clients
    User          = make(map[string]string)
)
type ClientConn struct {
    websocket *websocket.Conn
    clientIP string
}
func echoHandler(ws *websocket.Conn) {
    var err error
    for {
        var reply string
        if err = websocket.Message.Receive(ws, &reply); err != nil {
            fmt.Println(“can’t receive”)
            break
        }
        client := ws.Request().RemoteAddr
        fmt.Println(“Client connected:”, client)
        sockCli := ClientConn{ws, client}
        ActiveClients[sockCli] = client
        fmt.Println(“Number of clients connected:”, len(ActiveClients))
        if ActiveClients[sockCli] != “” {
            for cs, na := range ActiveClients {
                if na != “” {
                    if err = websocket.Message.Send(cs.websocket, reply); err != nil {
                        log.Println(“Could not send message to “, cs.clientIP, err.Error())
                    }
                }
            }
        }
    }
}
func main() {
    http.Handle(“/echo”, websocket.Handler(echoHandler))
    http.Handle(“/”, http.FileServer(http.Dir(“.”)))
    err := http.ListenAndServe(“:8080”, nil)
    if err != nil {
        panic(“ListenAndServe: ” + err.Error())
    }
}
运行服务端代码
[AppleScript] 纯文本查看 复制代码
?
1
go run server.go
客户端html代码,置于nginx下,通过域名访问,打开两个浏览器,可以实现简单聊天功能
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
<html>
<head>
    <meta charset=”UTF-8″/>
    <title>Sample of websocket with golang</title>
    <script src=”http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js”></script>
    <script>
      $(function() {
        var ws = new WebSocket(“ws://xxx.xx.xxx.xx:8080/echo”);
        ws.onmessage = function(e) {
          $(‘<li>’).text(event.data).appendTo($ul);
        };
        var $ul = $(‘#msg-list’);
        $(‘#sendBtn’).click(function(){
          var data = $(‘#name’).val();
          ws.send(data);
        });
      });
    </script>
</head>
<body>
<input id=”name” type=”text”/>
<input type=”button” id=”sendBtn” value=”send”/>
<ul id=”msg-list”></ul>
</body>
</html>
资源下载此资源仅限注册用户下载,请先
客服QQ:3482249445
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

所有文章为演示数据,不提供下载地址,版权归原作者所有,仅提供演示效果!

小程序网 小程序 猜拳小程序(go+websocket+redis+mysql) https://www.10000ii.com/19177.html

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用
查看详情

相关文章

猜拳小程序(go+websocket+redis+mysql)-海报

分享本文封面