WebSocket Connector
Условие задачи
Необходимо корректно реализовать методы handleConnect и handleDisconnect, учитывая возможность одновременных подключений и отключений, и обеспечить безопасную работу со счётчиком подключенных клиентов в условиях параллелизма
gotype Message struct {
UserID int
Payload string
}
type Connection struct {
UserID int
DeviceID string
}
func (c *Connection) Write(p []byte) (n int, err error) {
// Pretend it is implemented
return 0, nil
}
type WSServer struct {
connectedClientsCount uint64
}
func (w *WSServer) handleConnect(c Connection) {
// TODO
}
func (w *WSServer) handleDisconnect(c Connection) {
// TODO
}
func (w *WSServer) totalConnectedClients() uint64 {
return w.connectedClientsCount
}
func (w *WSServer) handleQueueMessages(messages []Message) (int, error) {
for i, m := range messages {
err := w.sendToConnectedDevices(m)
if err != nil {
return i, err
}
}
return len(messages), nil
}
func (w *WSServer) sendToConnectedDevices(m Message) error {
// TODO
return nil
}