[MM-40485] Enable receiving binary websocket messages (#19128)
* Enable receiving binary websocket messages * Improve error message * Prefer anonymous declaration * Simplify * Improve test * Use MessagePack to clone WebSocketRequest struct * Use short form * Fix test
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
64fb04a9e9
Коммит
6d361db638
@@ -234,6 +234,47 @@ func TestWebSocketReconnectRace(t *testing.T) {
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func TestWebSocketSendBinary(t *testing.T) {
|
||||
th := Setup(t).InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
client := th.CreateClient()
|
||||
th.LoginBasicWithClient(client)
|
||||
WebSocketClient, err := th.CreateWebSocketClientWithClient(client)
|
||||
require.NoError(t, err)
|
||||
defer WebSocketClient.Close()
|
||||
WebSocketClient.Listen()
|
||||
resp := <-WebSocketClient.ResponseChannel
|
||||
require.Equal(t, resp.Status, model.StatusOk)
|
||||
|
||||
client2 := th.CreateClient()
|
||||
th.LoginBasic2WithClient(client2)
|
||||
WebSocketClient2, err := th.CreateWebSocketClientWithClient(client2)
|
||||
require.NoError(t, err)
|
||||
defer WebSocketClient2.Close()
|
||||
|
||||
time.Sleep(1000 * time.Millisecond)
|
||||
|
||||
WebSocketClient.SendBinaryMessage("get_statuses", nil)
|
||||
resp = <-WebSocketClient.ResponseChannel
|
||||
require.Nil(t, resp.Error, resp.Error)
|
||||
require.Equal(t, resp.SeqReply, WebSocketClient.Sequence-1)
|
||||
|
||||
status, ok := resp.Data[th.BasicUser.Id]
|
||||
require.True(t, ok)
|
||||
require.Equal(t, model.StatusOnline, status)
|
||||
status, ok = resp.Data[th.BasicUser2.Id]
|
||||
require.True(t, ok)
|
||||
require.Equal(t, model.StatusOnline, status)
|
||||
|
||||
WebSocketClient.SendBinaryMessage("get_statuses_by_ids", map[string]interface{}{
|
||||
"user_ids": []string{th.BasicUser2.Id},
|
||||
})
|
||||
status, ok = resp.Data[th.BasicUser2.Id]
|
||||
require.True(t, ok)
|
||||
require.Equal(t, model.StatusOnline, status)
|
||||
}
|
||||
|
||||
func TestWebSocketStatuses(t *testing.T) {
|
||||
th := Setup(t).InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
Ссылка в новой задаче
Block a user