问题标签 [libchan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - Spdy 流接收器正在接收 nil 对象
我正在使用libchan
docker 库。他们的例子是这样的:
这是服务器:
当我运行服务器并与客户端发送消息时:
我在服务器日志中看到了这个输出:
我的服务器接收到带有echo
命令的消息并成功执行。但是,它也会收到一个空命令,然后抛出一个 EOF:
为什么命令是空字符串?
我的怀疑是客户端退出然后发送exit
信号。但如果是这样的话,为什么命令会是空白的呢?请帮助我了解发生了什么。
go - 尝试使用 go 接口实现多态性
我正在尝试在第三方库之上创建一个层,在本例中为 libchan。这是我定义的接口:
这InboundTransport
意味着作为 type 的替代品Transport
:
只是为了上下文,这是libchan.Receiver
定义(请注意它与我的匹配ReceiverStream
:
由Transport
libchan 库在此处返回:
由于libchan.Transport
并InboundTransport
分享了一种WaitReceiveChannel() (ReceiverStream, error)
方法,我想我应该能够将一个方法分给另一个方法,如下所示:
但我收到一个错误:
我假设这个错误的意思是类型ReceiverStream
不匹配libchan.Receiver
,但我认为golang接口是隐式的,这意味着只要返回类型实现与预期接口相同的方法,它就会通过编译。有什么我可以改变的,以便我可以将自定义接口叠加到第三方库返回的接口上吗?
TLDR:第三方库正在返回 interface 的对象Transport
。Transport
接口指定了一个方法WaitReceiveChannel()
。我有一个自定义接口InboundTransport
,它还指定WaitReceiveChannel()
. 我调用的第三方方法返回一个Transport
通过 method实现的对象WaitReceiveChannel()
。我假设它也会实现InboundTransport
,因为后者也指定了WaitReceiveChannel()
相同类型的 a。这是行不通的。为什么不?
go - 需要帮助了解 libchan 的工作原理
我正在尝试使用libchan库在使用类似 go 通道的传输的机器之间发送消息。
根据我收集到的信息,粗略的想法是这样的:
- 你有一个 SPDY 客户端,它通过 tcp 向一个地址发送一个序列化的命令对象。此命令对象包含一个名为 a 的 libchan 通道
Pipe
,通过该通道发送响应。 - 当服务器接收到一个传入连接时,它会等待一个命令对象。
Pipe
当它得到一个时,它会通过包含在对象中的内容发送响应。
这是我的困惑点。要让通道在两台机器之间持续存在,它们必须共享内存或至少共享连接它们两者的抽象。根据我对 libchan 代码库的了解,我不知道这怎么可能。
这是 repo 中示例的片段:
和服务器:
我要磨练的重点在这里:
根据消息来源,这将返回一个通道。一个引用保存在客户端,另一个发送到服务器。然后使用此通道将值从后者传递到前者。这在实践中如何运作?