7waves

暂无描述

一个im

kratos new app/gateway    --nomod
kratos new app/user       --nomod
kratos new app/relation   --nomod
kratos new app/conversation --nomod
kratos new app/message    --nomod
kratos new app/media      --nomod
kratos proto add api/user/v1/user.proto
kratos proto add api/relation/v1/relation.proto
kratos proto add api/conversation/v1/conversation.proto
kratos proto add api/message/v1/message.proto
kratos proto add api/media/v1/media.proto
A -> ws-1 -> 略
B -> ws-2 -> message ->  一致性 hash -> ws-* push message -> A
		  -> media
		  -> conversation
		  -> relation
.
├── CLAUDE.md
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
├── api
│   ├── connect
│   │   └── v1
│   │       ├── connect.pb.go
│   │       ├── connect.proto
│   │       ├── connect_grpc.pb.go
│   │       └── connect_http.pb.go
│   ├── conversation
│   │   └── v1
│   │       ├── conversation.pb.go
│   │       ├── conversation.proto
│   │       ├── conversation_grpc.pb.go
│   │       └── conversation_http.pb.go
│   ├── media
│   │   └── v1
│   │       ├── media.pb.go
│   │       ├── media.proto
│   │       ├── media_grpc.pb.go
│   │       └── media_http.pb.go
│   ├── message
│   │   └── v1
│   │       ├── message.pb.go
│   │       ├── message.proto
│   │       ├── message_grpc.pb.go
│   │       └── message_http.pb.go
│   ├── push
│   │   └── v1
│   │       ├── push.pb.go
│   │       ├── push.proto
│   │       ├── push_grpc.pb.go
│   │       └── push_http.pb.go
│   ├── relation
│   │   └── v1
│   │       ├── relation.pb.go
│   │       ├── relation.proto
│   │       ├── relation_grpc.pb.go
│   │       └── relation_http.pb.go
│   └── user
│       └── v1
│           ├── user.pb.go
│           ├── user.proto
│           ├── user_grpc.pb.go
│           └── user_http.pb.go
├── apisix
│   ├── apisix.yaml
│   └── dashboard
│       └── conf.yaml
├── app
│   ├── connect
│   │   ├── Dockerfile
│   │   ├── Makefile
│   │   ├── api
│   │   ├── bin
│   │   │   └── connect
│   │   ├── cmd
│   │   │   └── connect
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs
│   │   │   └── config.yaml
│   │   └── internal
│   │       ├── biz
│   │       │   ├── README.md
│   │       │   ├── biz.go
│   │       │   ├── connection.go
│   │       │   └── errors.go
│   │       ├── conf
│   │       │   ├── conf.pb.go
│   │       │   └── conf.proto
│   │       ├── data
│   │       │   └── data.go
│   │       ├── server
│   │       │   ├── grpc.go
│   │       │   ├── http.go
│   │       │   ├── server.go
│   │       │   └── websocket.go
│   │       └── service
│   │           ├── connect.go
│   │           └── service.go
│   ├── conversation
│   │   ├── Dockerfile
│   │   ├── Makefile
│   │   ├── cmd
│   │   │   └── conversation
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs
│   │   │   └── config.yaml
│   │   └── internal
│   │       ├── biz
│   │       │   ├── biz.go
│   │       │   └── conversation.go
│   │       ├── conf
│   │       │   ├── conf.pb.go
│   │       │   └── conf.proto
│   │       ├── data
│   │       │   ├── conversation.go
│   │       │   └── data.go
│   │       ├── server
│   │       │   ├── grpc.go
│   │       │   ├── http.go
│   │       │   └── server.go
│   │       └── service
│   │           ├── conversation.go
│   │           └── service.go
│   ├── media
│   │   ├── Dockerfile
│   │   ├── Makefile
│   │   ├── cmd
│   │   │   └── media
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs
│   │   │   └── config.yaml
│   │   └── internal
│   │       ├── biz
│   │       │   ├── biz.go
│   │       │   └── media.go
│   │       ├── conf
│   │       │   ├── conf.pb.go
│   │       │   └── conf.proto
│   │       ├── data
│   │       │   ├── data.go
│   │       │   └── media.go
│   │       ├── server
│   │       │   ├── grpc.go
│   │       │   ├── http.go
│   │       │   └── server.go
│   │       └── service
│   │           ├── media.go
│   │           └── service.go
│   ├── message
│   │   ├── Dockerfile
│   │   ├── Makefile
│   │   ├── bin
│   │   │   └── message
│   │   ├── cmd
│   │   │   └── message
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs
│   │   │   └── config.yaml
│   │   └── internal
│   │       ├── biz
│   │       │   ├── biz.go
│   │       │   └── message.go
│   │       ├── conf
│   │       │   ├── conf.pb.go
│   │       │   └── conf.proto
│   │       ├── data
│   │       │   ├── data.go
│   │       │   ├── kafka_producer.go
│   │       │   ├── message.go
│   │       │   └── relation_client.go
│   │       ├── server
│   │       │   ├── grpc.go
│   │       │   ├── http.go
│   │       │   ├── kafka_consumer.go
│   │       │   └── server.go
│   │       └── service
│   │           ├── message.go
│   │           └── service.go
│   ├── push
│   │   ├── Dockerfile
│   │   ├── Makefile
│   │   ├── api
│   │   ├── bin
│   │   │   └── push
│   │   ├── cmd
│   │   │   └── push
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs
│   │   │   └── config.yaml
│   │   └── internal
│   │       ├── biz
│   │       │   ├── README.md
│   │       │   ├── biz.go
│   │       │   └── push.go
│   │       ├── conf
│   │       │   ├── conf.pb.go
│   │       │   └── conf.proto
│   │       ├── data
│   │       │   ├── README.md
│   │       │   ├── connect_client.go
│   │       │   └── data.go
│   │       ├── server
│   │       │   ├── grpc.go
│   │       │   ├── http.go
│   │       │   ├── kafka_consumer.go
│   │       │   └── server.go
│   │       └── service
│   │           ├── README.md
│   │           ├── push.go
│   │           └── service.go
│   ├── relation
│   │   ├── Dockerfile
│   │   ├── Makefile
│   │   ├── bin
│   │   │   └── relation
│   │   ├── cmd
│   │   │   └── relation
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs
│   │   │   └── config.yaml
│   │   └── internal
│   │       ├── biz
│   │       │   ├── biz.go
│   │       │   └── relation.go
│   │       ├── conf
│   │       │   ├── conf.pb.go
│   │       │   └── conf.proto
│   │       ├── data
│   │       │   ├── data.go
│   │       │   └── relation.go
│   │       ├── server
│   │       │   ├── grpc.go
│   │       │   ├── http.go
│   │       │   └── server.go
│   │       └── service
│   │           ├── relation.go
│   │           └── service.go
│   └── user
│       ├── Dockerfile
│       ├── Makefile
│       ├── apisix
│       │   └── dashboard
│       ├── bin
│       │   └── user
│       ├── cmd
│       │   └── user
│       │       ├── main.go
│       │       ├── wire.go
│       │       └── wire_gen.go
│       ├── configs
│       │   └── config.yaml
│       ├── ent
│       │   ├── client.go
│       │   ├── ent.go
│       │   ├── enttest
│       │   │   └── enttest.go
│       │   ├── generate.go
│       │   ├── hook
│       │   │   └── hook.go
│       │   ├── migrate
│       │   │   ├── migrate.go
│       │   │   └── schema.go
│       │   ├── mutation.go
│       │   ├── predicate
│       │   │   └── predicate.go
│       │   ├── runtime
│       │   │   └── runtime.go
│       │   ├── runtime.go
│       │   ├── schema
│       │   │   └── user.go
│       │   ├── tx.go
│       │   ├── user
│       │   │   ├── user.go
│       │   │   └── where.go
│       │   ├── user.go
│       │   ├── user_create.go
│       │   ├── user_delete.go
│       │   ├── user_query.go
│       │   └── user_update.go
│       └── internal
│           ├── biz
│           │   ├── biz.go
│           │   ├── jwt_provider.go
│           │   └── user.go
│           ├── conf
│           │   ├── conf.pb.go
│           │   └── conf.proto
│           ├── data
│           │   ├── data.go
│           │   └── user.go
│           ├── server
│           │   ├── grpc.go
│           │   ├── http.go
│           │   └── server.go
│           └── service
│               ├── service.go
│               └── user.go
├── docker-compose.apisix.yml
├── go.mod
├── go.sum
├── openapi.yaml
├── pkg
│   ├── idgen
│   │   └── ulid.go
│   ├── jwtx
│   │   ├── bearer.go
│   │   └── jwtx.go
│   ├── mq
│   │   ├── consumer.go
│   │   ├── producer.go
│   │   └── topics.go
│   ├── password
│   │   └── bcrypt.go
│   └── redis
│       ├── client.go
│       └── online_status.go
├── s-waves
│   └── api
│       └── connect
│           └── v1
│               ├── connect.pb.go
│               ├── connect_grpc.pb.go
│               └── connect_http.pb.go
└── third_party
    ├── README.md
    ├── errors
    │   └── errors.proto
    ├── google
    │   ├── api
    │   │   ├── annotations.proto
    │   │   ├── client.proto
    │   │   ├── field_behavior.proto
    │   │   ├── http.proto
    │   │   └── httpbody.proto
    │   └── protobuf
    │       ├── any.proto
    │       ├── api.proto
    │       ├── compiler
    │       │   └── plugin.proto
    │       ├── descriptor.proto
    │       ├── duration.proto
    │       ├── empty.proto
    │       ├── field_mask.proto
    │       ├── source_context.proto
    │       ├── struct.proto
    │       ├── timestamp.proto
    │       ├── type.proto
    │       └── wrappers.proto
    ├── openapi
    │   └── v3
    │       ├── annotations.proto
    │       └── openapi.proto
    └── validate
        ├── README.md
        └── validate.proto

125 directories, 228 files

curl -X POST http://localhost:8080/api/v1/groups -H "Content-Type: application/json" -H "Authorization: Bearer 
     eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjEsImlzcyI6Inotd2F2ZXMiLCJzdWIiOiJ1c2VyMUBleGFtcGxlLmNvbSIsImV4cCI6MTc2MDM0NzM4MiwibmJmIjoxNzYwMjYwOTgyLCJpYXQiOjE3NjAyNjA5ODJ9.8Z0Tbyl6S4tGLCDZF0eoyD7IFflXxzZxvw69QVDPQmQ" -d '{"name": "Test Group", "description": "A group for testing"}'
     
curl -X POST http://localhost:8080/api/v1/groups/1/conversation -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjEsImlzcyI6Inotd2F2ZXMiLCJzdWIiOiJ1c2VyMUBleGFtcGxlLmNvbSIsImV4cCI6MTc2MDM0NzM4MiwibmJmIjoxNzYwMjYwOTgyLCJpYXQiOjE3NjAyNjA5ODJ9.8Z0Tbyl6S4tGLCDZF0eoyD7IFflXxzZxvw69QVDPQmQ"
搜索