本文的原文连接是:http://www.jb51.cc/article/p-oznomivt-brn.html
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
1,关于goim
goim 是一个不错的聊天服务器。
上次已经吧kafka 做成一个镜像了。
http://www.jb51.cc/article/p-mauinwoj-brm.html
kafka goim只需要kafka 项目依赖。
使用docker 进行编译构建 goim 项目。
2,编译goim
首先使用使用golang 的环境编译。服务器安装好golang 环境。
官方安装文档
https://github.com/Terry-Mao/goim/blob/master/README_cn.md
#### 下载源码(根据自己的系统下载对应的安装包)
$ cd /data/programfiles
$ wget -c --no-check-certificate https://redirector.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz
$ tar -xvf go1.9.2.linux-amd64.tar.gz
-C /usr/local
### 配置GO环境变量 (这里我加在/etc/profile.d/golang.sh)
$ vi /etc/profile.d/golang.sh
# 将以下环境变量添加到profile最后面
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=/data/apps/go
$ source /etc/profile
git clone https://github.com/Terry-Mao/goim.git
mkdir $GOPATH/src/github.com/Terry-Mao/goim
mv goim $GOPATH/src/github.com/Terry-Mao/goim
#安装
go get -u github.com/kardianos/govendor
go install github.com/kardianos/govendor
#初始化
govendor init
#加入本地 vendor目录当中。
govendor add +external
#查看生成列表。
govendor list
govendor fetch github.com/thinkboy/log4go
govendor fetch github.com/gorilla/websocket
govendor fetch github.com/Shopify/sarama
govendor fetch github.com/wvanbergen/kafka/consumergroup
govendor fetch github.com/Terry-Mao/goconf
安装依赖
这个会安装到vendor 文件夹下面。
然后就可以编译了
$ cd $GOPATH/src/goim/router
$ go install
$ cp router-example.conf $GOPATH/bin/router.conf
$ cp router-log.xml $GOPATH/bin/
$ cd ../logic/
$ go install
$ cp logic-example.conf $GOPATH/bin/logic.conf
$ cp logic-log.xml $GOPATH/bin/
$ cd ../comet/
$ go install
$ cp comet-example.conf $GOPATH/bin/comet.conf
$ cp comet-log.xml $GOPATH/bin/
$ cd ../logic/job/
$ go install
$ cp job-example.conf $GOPATH/bin/job.conf
$ cp job-log.xml $GOPATH/bin/
启动:
$ cd /$GOPATH/bin
$ nohup $GOPATH/bin/router -c $GOPATH/bin/router.conf 2>&1 > /data/logs/goim/panic-router.log &
$ nohup $GOPATH/bin/logic -c $GOPATH/bin/logic.conf 2>&1 > /data/logs/goim/panic-logic.log &
$ nohup $GOPATH/bin/comet -c $GOPATH/bin/comet.conf 2>&1 > /data/logs/goim/panic-comet.log &
$ nohup $GOPATH/bin/job -c $GOPATH/bin/job.conf 2>&1 > /data/logs/goim/panic-job.log &
完全按照文档的操作就行。
3,启动问题配置
需要注意的,如果是本机启动需要先启动 kafka。
修改配置文件:
/logic/logic-example.conf
下的kafka 地址
[kafka]
addrs 127.0.0.1:9092,127.0.0.2:9092
修改 job 的 zookeeper 地址:
/logic/job/job-example.conf
[kafka]
zookeeper.list 127.0.0.1:2181
#zkroot /goim_job
topic KafkaPushsTopic
同时在kafka 上面创建 KafkaPushsTopic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic KafkaPushsTopic
这样服务全都启动就行了。
然后在example 下面有 demo 页面。
编译 main ,然后启动:
启动成功之后访问 1999 端口:一个clinet demo。
可以看到 链接到 sub 的websocket 上了。
后台日志也成功显示:
==> panic-comet.log <==
[12/19/17 10:14:56] [DEBG] start websocket serve "192.168.1.1:8090" with "192.168.2.2:51816"
[12/19/17 10:14:56] [DEBG] "0_4" hit channel bucket index: 58 use cityhash
[12/19/17 10:14:56] [DEBG] key: 0_4 start dispatch websocket goroutine
[12/19/17 10:14:56] [DEBG] ring wp: 1,idx: 1
[12/19/17 10:14:56] [DEBG] ring rp: 1,idx: 1
查看所有的日志没有报错,说明启动成功,一般就是kafka的配置问题。
两个地方修改下就可以了。
4,总结
goim 是一个非常好的项目展示了如何使用 golang 开发一个聊天系统。
这个才是golang的真正的使用场景。慢慢学习研究。
本文的原文连接是:http://www.jb51.cc/article/p-oznomivt-brn.html
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys