Comments (6)
based on post Redux WebSocket Integration
Client Redux Middleware
- subscribe on all ws message, extract type and payload from it and match type to existing actions types. If it matches dispatch the action with payload
- on special emit actions emit ws event to server (so server could hold your state and fire needed events back to you)
Server Side
- Q: how to store user's state?
- Q: how to use user's state and subscribe to something else and emit ws back to client?
- Q: isn't it make fat server?
from fire-marshal.
based on https://github.com/notgiorgi/redux-websocket-middleware
- create connection manager (https://github.com/notgiorgi/redux-websocket-middleware/blob/master/src/lib/ConnectionManager.js)
- uses redux store to emit events on open, close, error, receive message events (https://github.com/notgiorgi/redux-websocket-middleware/blob/master/src/actions.js)
- queue of messages
- could connect with multiple endpoints (specific endpoint is sent in
meta
option)
- use native WebSocket
- emit to server by adding extra option
meta: { socket: true }
from fire-marshal.
based on https://github.com/cape-io/cape-redux-socket/
from fire-marshal.
the most popular https://github.com/itaylor/redux-socket.io and one of the simplest solution.
from fire-marshal.
Server side Agent
- receives users data (input)
- store data (MongoDB)
- react on new data (subscribe to something)
- gets data from something
- send ws messages back to client
in other words it is simplified version of user but on server side
Important
- scalability - we can't use server state, only state from DB
- what will be in case of restarted server? Do use would need to send all needed information again? Or we could recreated from DB?
from fire-marshal.
Few types of client state
consistent
- important only the last state (doesn't care about history) we don't need queue here
- example: user's location, watching streaming data
- on lost connection/reconnect: preserve and send this state to server
coherent
- important all history (queue)
- example: user's messages
- on lost connection/reconnect: preserve queue and send whole queue to server
from fire-marshal.
Related Issues (20)
- sync list with map
- place fire events on map
- too frequent update of updatesFeed.getSortedItemsRaw
- show any number of markers on map
- show horizontal entity list for devices with small screen
- use itemData prop to pass data list to react-window
- progressive web app
- add spinner
- improve error notification by adding source file and line number
- take a look on published leaflet layers
- protect from wss overloaded stream
- add error boundaries to catch errors in React components
- use react strict mode
- split app in submodules and load them lazily
- update deps and refactor code
- connect fonts awesome
- get new updates by drag and release feed list HOT 1
- UI for horizontal mobile devices HOT 1
- hack mobile viewport
- full screen mode for mobile
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fire-marshal.