我现在正在 gRPC 中创建一个小型聊天应用程序,我遇到了一个问题,如果用户想作为客户端连接到 gRPC 服务器,我想向所有其他连接的人广播该事件已发生客户。
我正在考虑使用某种观察者,但我很困惑服务器如何知道谁连接了以及我如何将事件广播给所有客户端,而不仅仅是一两个客户端。
我知道使用流是答案的一部分,但是因为每个客户端都在使用服务器创建自己的流,所以我不确定它如何订阅其他服务器-客户端流。
目前,我正在尝试Hash从 JS 中获取某种Ruby 格式的内容。
我有一个看起来像这样的 JS 模块
module.exports = {
key1: "val",
key2: {
key3: "val3"
}
...
}
Run Code Online (Sandbox Code Playgroud)
这只是作为一个字符串提供给我的。我知道 ExecJS 在这里可能会有所帮助,但我不确定将其转换为哈希的最佳方法是什么。
我目前正在尝试做这样的事情
contents.prepend("var module = {exports: {}};\n")
context = ExecJS.compile contents
context.eval('module.exports').to_hash
Run Code Online (Sandbox Code Playgroud)
但是当给它一个像上面这样的字符串时,我收到了来自 JSON gem 的解析错误。
目前,我创建了一个搜索栏,并将我的搜索栏链接到我的搜索结果,如下所示:
render() {
if (this.props.itemsFetchSuccess) {
return (
<Redirect to={{
pathname: '/search',
search: `?item-name=${this.props.searchQuery}`
}} />
);
Run Code Online (Sandbox Code Playgroud)
作为我的搜索栏渲染组件的一部分。
GOOGLE CHROME 主 -> 主登陆 -> 搜索结果。
但我怀疑因为我在 React-Router v4 中使用了重定向标签,所以它没有将它添加到浏览器历史堆栈中。如果我从搜索结果页面按回浏览器,它不会返回之前的页面(即主登陆),但会返回主登陆之前的页面。
有没有更好的方法来做到这一点,因为我也尝试使用 Link 标签,但这不起作用,因为它只是生成链接,并且在搜索结果完成后实际上并不重定向。
谢谢!
javascript ×2
execjs ×1
go ×1
grpc ×1
http2 ×1
react-redux ×1
react-router ×1
reactjs ×1
redis ×1
ruby ×1
web ×1