⛳
WebチャットのpubsubをredisからGo言語製のRESPサーバーに変える
今回も次のqiita記事のWebチャットを触ってみます。ここに公開されていています。
コードは前回は、grpcwebを使って、envoyを除きました。今回はredisをGo言語製のRESP(REdis Serialization Protocol)サーバーbsm/redeoに置き換えてみます。
docker-compose.yml
のredis
サービスの部分をDockerfileRedis
でビルドするように変更します。
docker-compose.yml
@@ -6,11 +6,12 @@ services:
context: .
dockerfile: DockerfileProto
volumes:
- - .:/proto
+ - .:/proto
redis:
- image: "redis:latest"
- volumes:
- - "./redis/data:/data"
+ command: redeo-server-example
+ build:
+ context: .
+ dockerfile: DockerfileRedis
server:
command: ./scripts/server.sh
build:
bsm/redeo
にpubsubをサポートしたサンプルプログラムがあるので、それを使います。
DockerfileRedis
FROM golang:1.14.0-alpine3.11
RUN apk add --no-cache --update git
RUN go get github.com/bsm/redeo/cmd/redeo-server-example
redeo-server-example
はredis
の使用するポートが違うので、修正します。
grpc-web-react-hooks/server/main.go
@@ -78,7 +78,7 @@ func (s *server) CreateMessage(ctx context.Context, r *pb.MessageRequest) (*pb.M
func newRedisClient() *redis.Client {
client := redis.NewClient(&redis.Options{
- Addr: "redis:6379",
+ Addr: "redis:9736",
Password: "",
DB: 0,
})
まとめ
今回はredisをGo製のRESPサーバーに置き換えてみました。bsm/redeo
はおそらくWindows用にビルドも出来るので、Windows用に小さなアプリを作ったり、開発環境に使ったりできるかもしれません。
Discussion