На каком уровне после запроса (ws.send(...), получив данные в ws.onmessage(data)) запихнуть их в диспатч - в payload, причем мне нужно учитывать, что следующий вызов ws.send(...) - поместит в ws.onmessage(data) - другие данные, которые нужно будет обработать по другому.
Вы сами себе на вопрос ответили: ws.onmessage(data)
Внутри обработчика onmessage, в зависимости от того, что пришло в data - вы можете обрабатывать ваши данные различным способом. Чтобы обработанные данные попали в нужный редьюсер, вам нужно диспатчить разные экшены.
Например:
ws.onmessage = (data) => {
const myData = JSON.parse(data.data); // предположим, что там собаки или кошки
if (data.data = 'cats') { dispatch(addToCats(data.data) }
if (... )
// можете обработать каким-либо образом:
const newData = '123' + data.data
dispatch(anyActionCreator(newData)
}