java websocket客户端_Java中的简单Websocket客户端-连接问题

我试图用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相当陌生)。您能提供的任何帮助将不胜感激!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值