我试图用Java编写一个简单的websocket客户端,以连接到第3方WebSocket服务器(我无法访问该服务器)。
我可以在浏览器中使用javascript连接和与websocket服务器通信,但是当我尝试使用Java客户端执行相同的操作时,它将无法连接。
使用相同的Java客户端,我可以连接到我正在运行的tomcat
Websocket服务器,因此,我认为这是客户端和服务器之间的某种兼容性问题。(我将Tomcat 7.0.56库用于websocket客户端)。
这是我得到的错误…
错误
javax.websocket.DeploymentException: The HTTP request to initiate the WebSocket connection failed
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:344)
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:166)
at com.cvr.instant.ws.WebSocketClient.Connect(WebSocketClient.java:44)
at com.cvr.instant.ws.TestWS.Start(TestWS.java:17)
at com.cvr.instant.ws.TestWS.main(TestWS.java:37)
Caused by: java.io.EOFException
at org.apache.tomcat.websocket.WsWebSocketContainer.processResponse(WsWebSocketContainer.java:595)
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:317)
... 4 more
WebSocket客户端
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import javax.websocket.ClientEndpoint;
import javax.websocket.CloseReason;
import javax.websocket.ContainerProvider;
import javax.websocket.DeploymentException;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
@ClientEndpoint
public class WebSocketClient {
protected WebSocketContainer container;
protected Session userSession = null;
public WebSocketClient() {
container = ContainerProvider.getWebSocketContainer();
}
public void Connect(String sServer) {
try {
userSession = container.connectToServer(this, new URI(sServer));
} catch (DeploymentException | URISyntaxException | IOException e) {
e.printStackTrace();
}
}
public void SendMessage(String sMsg) throws IOException {
userSession.getBasicRemote().sendText(sMsg);
}
@OnOpen
public void onOpen(Session session) {
System.out.println("Connected");
}
@OnClose
public void onClose(Session session, CloseReason closeReason) {
}
@OnMessage
public void onMessage(Session session, String msg) {
System.out.println(msg);
}
public void Disconnect() throws IOException {
userSession.close();
}
}
运行客户端
import java.io.IOException;
public class TestWS {
public WebSocketClient wsc;
public TestWS() {
}
public void Start() throws InterruptedException, IOException {
wsc = new WebSocketClient();
wsc.callback = this;
wsc.Connect("ws://192.168.0.25:9000");
Thread.sleep(1000);
wsc.Disconnect();
}
public static void main(String[] args) throws InterruptedException, IOException
{
TestWS t = new TestWS();
t.Start();
Thread.sleep(1000);
}
}
我对websocket客户端非常陌生(一般来说对websocket相当陌生)。您能提供的任何帮助将不胜感激!
我发现了问题-从Java客户端运行时,ws地址的末尾需要一个’/’。
JavaScript ws://192.168.0.25:9000
Java ws://192.168.0.25:9000 /
不知道为什么在Java中需要这样做-但它解决了这个问题…
我对javax有问题。websocket(使用Eclipse IDE和Jetty 9服务器)。我写了ClientEndDoint(带有所有注释)。这段代码可以与“ws://”配合使用,但我在尝试使用“wss://”时遇到了问题。 我试图做它与SSLContext,但不知道如何我可以添加SSLContextFactory到我的会话或套接字容器。 或者我如何可以使所有连接可信? StackTrace:
问题内容: Google的Chrome和IE等应用程序可以透明地处理Kerberos身份验证;但是我找不到适合这种透明度的“简单” Java解决方案。我发现的所有解决方案都需要存在一个krb5.conf文件和一个login.conf文件,以上应用似乎还需要这些文件。 用有效的Kerberos SSO功能构建Java应用程序的最佳方法是什么? [更新]:明确地说,我需要一个 CLIENT 端解决方案
问题内容: 我正在寻找Java的SOAP客户端。 Apache Axis在我看来非常肿。我不明白为什么Java必须如此复杂。例如,在PHP中,我要做的就是: 我的$ response对象保存了我需要的所有信息。 有人可以建议我如何在Java中实现类似这样的事情而不会太麻烦呢? 提前谢谢了, 〜编辑1〜 @jarnbjo: 这对我非常有用。我遇到的困难是,需要哪些导入才能使代码运行? 我运行了以下命
我正在java应用程序中使用Jetty 9.4.18库编写WebSocket客户端。 我对WebSockets非常陌生,所以我开始使用Jetty文档中的两个示例类进行测试,连接到echo。websocket。组织机构 当我在没有SSL的情况下连接时,测试运行正常,但是如果连接到时失败 我总是遇到同样的异常: 看起来服务器在没有响应握手请求的情况下关闭。 我知道SslContextFactory,但
问题内容: 我有一个简单的问题。我正在尝试将文件上传到Java中的ftp服务器。 我的计算机上有一个文件,我想复制该文件并上传。我尝试将文件的每个字节手动写入输出流,但这不适用于复杂文件,例如zip文件或pdf文件。 只是为了踢球,这是我尝试做的事情: 例如,当我使用pdf进行此操作,然后尝试打开使用该程序运行的pdf时,它表示尝试打开pdf时发生错误。我猜是因为我要在文件中写入“ \ n”?如何
问题内容: 我已经阅读了很多有关该主题的内容,telnet是一种协议,而不是简单的套接字连接,正在等待换行符,使用外部库等等。 最重要的是,我需要启动并运行一个快速且肮脏的Java telnet应用程序,它不一定可扩展且不一定漂亮,因此我试图避免使用库,系统函数调用等。我一直在尝试和测试,到目前为止,当尝试登录路由器(当然是通过telnet)时,我什么都没有。 这是到目前为止我一直在使用的代码的一
我正在制作一个Flask网络应用程序,我正在使用Flask Socketio。出于各种原因,我还需要使用websocket客户端包。一切正常,但当我尝试在不同网络上的不同计算机上运行应用程序时,出现以下错误: 我已经尽可能地将我的代码归结为以下内容,这些代码在我的计算机上仍然有效,但在另一台计算机上给出了相同的错误: 只是一个基本的“Hello World”html页面。 什么样的东西会让我在一台
我已经设置了一个WebSocket服务器使用超文本传输协议-kit,应该接受Web套接字连接。它是超文本传输协议-kit留档中显示的基本示例。 问题是:如何创建连接到它的Clojure客户端? 客户端可以是任何Clojure超文本传输协议库,我真的不介意。我已经了解了Javascript客户端,我相信Java有一个可以从Clojure中使用的API。但是我要找的是一个Clojure库,它支持客户端