redux react和socket.io

时间:2017-01-25 01:47:12

标签: reactjs socket.io redux react-redux

我设法让它发挥作用,但我认为这不是一个好的解决方案。

我的主要文件是:

import React from 'react';
import ReactDOM from 'react-dom';
import { Router,  hashHistory } from 'react-router';
import { Provider } from 'react-redux';
import routes from './router/routes';
import store from './store.js';

ReactDOM.render(
<Provider store={ store }>
    <Router routes={ routes } history={ hashHistory } />
</Provider>,
document.getElementById('wrap')
);

我的store.js是:

import { createStore } from 'redux';
import reducer from './reducers/index';
import initialState from './reducers/initial-state';
import connection from './lib/connection';

const store = createStore(reducer, initialState);

connection(store);

export default store;

和连接是:

import AppActions from '../actions/AppActions';
import io from 'socket.io-client';

export default function (store) {

const mainsocket = io.connect('$socketurl');

mainsocket.store = store;
mainsocket.actions = AppActions;

var socket;

mainsocket.on('namespaceinitialized', function(data) {

socket = io.connect("$socketurl/$namespace", {'autoConnect': false,'forceNew': true});
socket.connect();

socket.store = store;
socket.actions = AppActions;


socket.on('connect',function (data) {

//need store and actions

});

});

}

如您所见,我正在使用2个连接,首先是命名空间初始化,然后是第二个(这个问题并不重要)。

我不喜欢这种“脏”的解决方案,我将存储和操作附加到mainsocket对象,然后将它们从mainsocket传递到socket,以便能够访问套接字消息上的app动作,问题是什么是正确的方法?

此外在这个代码套接字连接之前app动作和商店已初始化,我想套接字连接是最后一件事但我不知道在哪里放呢?

我必须说我不是在编写自己的应用程序,而是在现有的开源应用程序中添加功能。

谢谢。

0 个答案:

没有答案