Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Are there any plans to implement prepared writes?

Đang mở
#546 6 bình luận 2 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Tính năng
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
go

Hướng nghiên cứu

Bắt đầu bằng cách xem xét API ghi hiện có của websocket.Conn trong thư viện và các điểm vào được đề xuất PrepareMessage và WritePrepared, sau đó so sánh hành vi được trích dẫn của gorilla/websocket và lxzan/gws. Xác định API, các tương tác với việc nén và vòng đời của thông điệp trước khi triển khai; được xem là hoàn tất khi có một thiết kế đã được thống nhất, hỗ trợ việc tái sử dụng cho các broadcast giống hệt nhau.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

I'm currently working on a websocket-based broadcasting server and would be more then happy to use this great library, but there is no prepared writes functionality, like in some other websocket libraries (e.g. gorilla/websocket and lxzan/gws). This would help a lot to optimize the broadcasting of identical messages. Are there any plans to implement this feature in some way (or accept PRs that implements it)?

I'm not sure how the API should look like, but it would be cool to have something similar.

var connections []*websocket.Conn

// Create prepared message without frames generation.
pm := websocket.PrepareMessage(websocket.MessageText, []byte("hello"))
defer pm.Close()

for _, c := range connections {
    // Lazily initialize frame buffer for "pm" and reuse it for other connections.
    // For each set of compression settings (mode and threshold), there will be separate pre-initialized frame
    // buffers, so if some connections don't have compression enabled and some do have, then two types of
    // frame buffers will be initialized for each of them.
	if err := c.WritePrepared(ctx, pm); err != nil {
		log.Printf("failed to write prepared message: %v\n", err)
	}
}
Ngôn ngữ chính
Go
Star
5.5k
Fork
377
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của coder/websocket

Tất cả issue của coder/websocket

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.