我总是收到一条消息说:
$ .hubConnection不是一个函数
错误:找不到jQuery.请确保在SignalR客户端JavaScript文件之前引用jQuery.安慰"$"和"jquery"是不确定的.
我需要做什么,让信号器使用webpack工作?
我正在设计一个使用Redux作为状态存储的React网站,该网站主要是为了向用户显示项目的当前填充,并使用实时更新通过SignalR更新项目填充。
我要这样做的方法是让SignalR发送项目更新消息,以在连接到服务器集线器时初始化初始填充,并随着时间的流逝通过相同的消息类型进行更新。我将有一个函数,该函数接受SignalR消息并将其转换为Redux动作并调度到Redux商店,然后该商店将使用该动作来更新状态,然后更新UI。
所以这个想法是
1)连接到SignalR服务器中心,并为ItemUpdate消息设置客户端处理程序功能
2)当服务器从客户端收到Connect()时,它将为填充中的所有当前项目发送ItemUpdate消息
3)客户端从SignalR接收这些消息,转换为动作并调度到Redux存储
4)Redux根据新商品信息更新商店,UI会显示它
5)服务器意识到一个项目已被添加或更新,并向客户端发送新的ItemUpdate消息以进行更新
6)重复
但是我不确定应该将集线器保持在什么位置,因为这似乎与React / Redux设计背道而驰。有人可以建议最好的方法吗?
我的主要应用
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import App from './App';
import './index.css';
import registerServiceWorker from './registerServiceWorker';
import 'rxjs';
import store from './store/index';
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root') as HTMLElement
);
registerServiceWorker();
Run Code Online (Sandbox Code Playgroud)
我的商店创建文件
import { createStore, applyMiddleware } from 'redux';
import rootReducer from '../reducers/index';
import signalRMiddleware from '../signalr/middleware';
const store = createStore(rootReducer, applyMiddleware(signalRMiddleware));
export …Run Code Online (Sandbox Code Playgroud)