所以我有一个带有这个签名的函数(akka.http.model.HttpResponse):
def apply(query: Seq[(String, String)], accept: String): HttpResponse
Run Code Online (Sandbox Code Playgroud)
我只是在测试中得到一个值:
val resp = TagAPI(Seq.empty[(String, String)], api.acceptHeader)
Run Code Online (Sandbox Code Playgroud)
我想在测试中检查它的身体,例如:
resp.entity.asString == "tags"
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将响应体作为字符串?
所以我们要玩!可以与SocketIO(javascript)客户端通信的应用程序。
到目前为止,我已经尝试过:
使用播放!内置WebSocket并发送与node.js服务器完全相同的字符串。结果根本无法正常工作。我可以在chrome框架选项卡中看到返回的消息,但是当来自nodejs服务器的消息触发onEvent处理程序时,Java实现从不执行此操作。
使用/移植socket.io.play项目。结果与Play相同!websocket版本,服务器获取消息,响应,但是消息不会触发javascript事件处理程序。
第三个Java实现是netty-socketio。我还没有尝试过,但是当我需要在另一个端口上启动而不是使用服务器端口和路由中的构建时,主要概念存在问题。
Java和scala版本都受到欢迎,我可以同时使用。
所以我的问题是:
播放Java控制器返回类型的示例:
public class WebSocketWithCallBack extends WebSocket<String> {
private static List<Out<String>> globalOutList = new ArrayList<>();
@Override
public void onReady(In<String> in, final Out<String> out) {
//Adding the output to the room
globalOutList.add(out);
System.out.println("adding output, " + globalOutList.size());
// For each event received on the socket,
in.onMessage(new F.Callback<String>() {
public void invoke(String event) {
//send event to all outputs
System.out.println("recieved message: ");
System.out.println(event);
for(Out<String> …Run Code Online (Sandbox Code Playgroud) 在过去的两天里,我收到了几个警报,因为我们的服务在很大一部分请求中响应了 5xx(通常是在下班时间,当我们的流量为零到低时)。
\n当我检查应用程序日志时,我发现了这两个;
\nIllegal request, responding with status \xe2\x80\x98501 Not Implemented\xe2\x80\x99: Unsupported HTTP method: MOZILLAVT\n\nIllegal request, responding with status \xe2\x80\x98501 Not Implemented\xe2\x80\x99: Unsupported HTTP method: VTTEST\nRun Code Online (Sandbox Code Playgroud)\n知道这些是什么以及哪些工具产生它们吗?谷歌没有帮助。
\n很明显,我们的网站正在接受某种漏洞测试,因为我看到了 nginx 访问日志,但这些请求不存在,这更奇怪。
\n