虽然这是一个相当老的问题,但在寻找示例时会出现好几次。正如@matthewatabet 和@abguy 提到的那样,https://github.com/luskhq/redux-ws 只是提到它已被弃用,您可以使用 Redux Thunk,而没有特定于 Web 套接字的示例。
为了将来参考,我发现this article 概述了一个示例,该示例在 Github 存储库中实现,从 this file 开始。这是针对socket.io的,但是直接使用web sockets应该是类似的。
总结一下,在组件调用dispatch 和addNewItemSocket:
<RaisedButton
label="Click to add!" primary={true}
onTouchTap={ () => {
const newItem = ReactDOM.findDOMNode(this.refs.newTodo.input).value
newItem === "" ? alert("Item shouldn't be blank")
: dispatch(addNewItemSocket(socket,items.size,newItem))
{/*: dispatch(addNewItem(items.size,newItem))*/}
ReactDOM.findDOMNode(this.refs.newTodo.input).value = ""
}
}
/>
在操作文件中,将addNewItemSocket 声明为:
export const addNewItemSocket = (socket,id,item) => {
return (dispatch) => {
let postData = {
id:id+1,
item:item,
completed:false
}
socket.emit('addItem',postData)
}
}
要处理来自套接字的传入消息,在组件的构造函数中:
socket.on('itemAdded',(res)=>{
console.dir(res)
dispatch(AddItem(res))
})
在actoins文件中,将AddItem声明为:
export const AddItem = (data) => ({
type: "ADD_ITEM",
item: data.item,
itemId:data.id,
completed:data.completed
})
对我来说,这仍然是新事物,因此我们非常感谢任何反馈。我还将向https://github.com/luskhq/redux-ws 提交 PR,以便在此处列出示例。