我正在使用 chrome websocket 客户端扩展附加到一个正在运行的容器,调用 Docker 远程 API,如下所示:
ws://localhost:2375/containers/34968f0c952b/attach/ws?stream=1&stdout=1
Run Code Online (Sandbox Code Playgroud)
容器从我的机器本地启动,在等待用户输入的图像中执行 jar。基本上我想从网络浏览器的输入字段提供这个输入。
虽然我能够使用 API 端点进行附加,但我遇到了一些问题 - 可能是由于我对 ws 端点的缺乏了解以及糟糕的文档 - 我想解决这些问题:
1) 使用chrome websocket 客户端扩展发送数据时,根据网络检测工具,该帧似乎是通过websocket 传输的。但是,在容器中运行的等待输入的进程只在 websocket 连接关闭时接收发送的数据 - 一次完成。这是标准行为吗?直观地,您会期望输入立即发送到流程。
2) 如果我同时附加到 stdin 和 stdout,docker 守护进程会卡住等待附加 stdin,导致看不到任何输出:
[debug] attach.go:22 attach: stdin: begin
[debug] attach.go:59 attach: stdout: begin
[debug] attach.go:143 attach: waiting for job 1/2
[debug] server.go:2312 Closing buffered stdin pipe
[error] server.go:844 Error attaching websocket: use of closed network connection
Run Code Online (Sandbox Code Playgroud)
我已经解决了为 stdin 和 stdout 打开两个单独连接的问题,这可行,但真的很烦人。关于这个有什么想法吗?
提前致谢!
我很难将Web套接字消息代理集成到我现有的spring项目中.我有一些功能齐全的存储库和服务.但是,当我尝试使用websocket配置(通过组件扫描从config.xml自动加载)连接我的东西时,我所有现有的测试突然失败.
WebSocketConfig
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableStompBrokerRelay("/topic/");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/main");
}
}
Run Code Online (Sandbox Code Playgroud)
测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:config.xml"})
public class CategoryDaoTest extends DomainTestBase {
@Autowired
private CategoryDao categoryDao;
@Test
public void testAdd() {
int size = categoryDao.list().size();
categoryDao.add(new Category(5L, "test-category", "lorem ipsum"));
assertTrue (size < categoryDao.list().size());
}
@Test
public void testUpdate() {
Category category = new Category(5L, "test-category", "lorem ipsum");
categoryDao.add(category);
category.setTitle("updated");
categoryDao.update(category);
// verify …Run Code Online (Sandbox Code Playgroud) 我很难将Symfony验证器组件与Doctrine集成(独立,不使用完整的Symfony框架).到目前为止,我已经设法在Doctrine的AnnotationRegistry中注册注释约束并挂钩生命周期回调,但是我如何实际检索验证器并解析生命周期方法中的注释?
我的实体看起来像这样:
<?php
namespace App\Model;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* User
*
* @ORM\HasLifecycleCallbacks
* @ORM\Table(name="users", uniqueConstraints={@ORM\UniqueConstraint(name="id_UNIQUE", columns={"id"}), @ORM\UniqueConstraint(name="username_UNIQUE", columns={"username"})})
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User extends AbstractEntity
{
/**
* @ORM\PreUpdate
* @ORM\PrePersist
*/
public function validate()
{
// how do I retrieve the validator?
// $validator->validate($this);
}
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=45, nullable=false)
* @Assert\Length(min=3, max=45)
*/
protected $username;
/** ... */
}
Run Code Online (Sandbox Code Playgroud)