我需要读取/files目录下的文件,然后在websocket客户端上显示该文件的内容。这就是我在MyRouteBuilder.scala中所做的工作:
import org.apache.camel.component.websocket.WebsocketComponent
import org.apache.camel.{LoggingLevel, CamelContext, Exchange}
import org.apache.camel.scala.dsl.builder.ScalaRouteBuilder
/**
* A Camel Router using the Scala DSL
*/
class MyRouteBuilder(override val context : CamelContext) extends ScalaRouteBuilder(context) {
// an example of a Processor method
val myProcessorMethod = (exchange: Exchange) => {
exchange.getIn.setBody("block test")
}
val ws = context.getComponent("websocket", classOf[WebsocketComponent]);
ws.setPort(8444);
ws.setHost("127.0.0.1")
// we can serve static resources from the classpath: or file: system
ws.setStaticResources("classpath:.");
"file://files?noop=true" ==> {
setBody(convertBodyTo(classOf[String]))
to("websocket://127.0.0.1:8444/")
}
}
但是,当我运行它时,会给出以下stacktrace:
RouteId ProcessorId处理器运行时间(ms)[route1][route1][File://Files?noop=true][2][route1][convertBodyTo1][ConvertBodyTo[java.lang.String]][1][route1][SetBody[{org.apache.camel.scala.ScalaExpression@F736069}]][0][route1][to1][WebSocket://127.0.0.1:8444/][1]
Exchange[Id ID-vaisakh-ubuntu-45785-1455531433908-1-12 ExchangePattern InOnly标头{breadcrumbid=id-vaisakh-ubuntu-45785-1455531433908-1-11,CamelFileAbsolute=false,CamelFileAbsolutePath=/Home/Sagar/IDeaProjects/SampleIntegrationService/Files/paudies.json,CamelFileContentType=text/plain,CamelFileLastModified=1455526488000,
通过从标头设置connection key属性解决了此问题。
from(websocketUrl) ==> {
setProperty("wsConnKey", header("websocket.connectionkey"))
to("file://files?noop=true")
}
"file://files?noop=true" ==> {
setBody(convertBodyTo(classOf[String]))
to(WEBSOCKET_RESPONSE_ENDPOINT)
}
from(WEBSOCKET_REPONSE_ENDPOINT) ==> {
process(new Processor() {
void process(Exchange exchange) {
Object connectionKey = exchange.getproperty("wsConnKey");
Object exchangeBody = exchange.getIn().getBody();
exchange.getOut().setHeader("wsConnKey", connectionKey);
exchange.getOut().setBody(exchangeBody);
}
})
to(websocketUrl)
}
客户端路由-从(“websocket://localhost:9999/camel/chat“”) 其中websocket server应用程序的jetty server正在9999上运行。。当尝试通过jetty websocket客户端应用程序进行连接时,它会在上述路由中的同一端口上启动另一个jetty,并给出已在使用的地址异常。。如何通过camel客户端建立连接。。
问题内容: 我正在计划使用Scala的Redis实例进行一些工作,并且正在寻找有关要使用的客户端库的建议。理想的情况是,如果有一个好的库,我想为Scala(而不是Java)设计一个库,但是如果现在使用Java客户机,那不是更好的选择。 在官方客户端列表显示斯卡拉- Redis的作为唯一的斯卡拉特定选项,但它是相当过时,它有许多与各种改进和提高叉…所以现在还不清楚哪些(如果有的话)是一个使用。 目前
我的Python secure websocket客户端代码给出了以下异常: [SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_SSL.C:748) 我已经创建了我的私有证书和签名证书,但我无法使用Python脚本连接到它,如下所示: 我的HTTPS/WSS服务器脚本用tornado用python编写,如下所示: 用于创建SSL签名证书的步骤:
我试图在CXFRS骆驼路由中创建对REST web服务调用的响应,但无论我做什么,对客户端的响应总是相同的200,而不是201。以下是我的路线: 返回正文,但忽略响应代码和内容类型。我做错了什么? 谢谢,马特
我已经设置了一个WebSocket服务器使用超文本传输协议-kit,应该接受Web套接字连接。它是超文本传输协议-kit留档中显示的基本示例。 问题是:如何创建连接到它的Clojure客户端? 客户端可以是任何Clojure超文本传输协议库,我真的不介意。我已经了解了Javascript客户端,我相信Java有一个可以从Clojure中使用的API。但是我要找的是一个Clojure库,它支持客户端
问题内容: 我有一个PyQt Gui应用程序。此应用程序有一个主窗口,应在启动后打开。 此应用程序应监听websocket。 我试着解决它是这样的: 但是,启动应用程序后,主窗口没有打开。 如果没有“ ws.run_forever()”行,则打开主窗口,但应用程序不侦听websocket。 我需要在“背景”中收听网络套接字吗?你能帮助我吗? PS :(对不起,我的英语) 问题答案: 感谢engin