-
2021-02-28 08:58:24
我使用spring web socket api在我的应用程序中实现Web Socket连接 . 我已经通过使用以下链接中的示例扩展Spring TextWebSocketHandler来实现这一点 .
它大部分时间都有效 . 但是,连接有时停止,我看到下面的错误,其中有连接失败 .
DEBUG [http-nio-8222-exec-9] [138F0E344FB38D5997135FD3BEF59EC2] 2017-12-06 05:33:44,418 LoggingWebSocketHandlerDecorator.java | (62) - StandardWebSocketSession中的传输错误[id = 20,uri = / connect / app-socket] org.apache.tomcat.util.net.NioEndpoint上的java.io.EOFException $ NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1134) at org.apache.tomcat.util.net.NioEndpoint $ NioSocketWrapper.read(NioEndpoint.java:1074)org.apache.toc上的org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:63) .gbsocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java) :53)在org.apache的org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:767)org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1347) . java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExe)中的tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) cutor.java:1142)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)at java .lang.Thread.run(Thread.java:748)DEBUG [http-nio-8222-exec-9] [138F0E344FB38D5997135FD3BEF59EC2] 2017-12-06 05:33:44,418 LoggingWebSocketHandlerDecorator.java | (70) - 用CloseStatus [code = 1006,reason = null]关闭StandardWebSocketSession [id = 20,uri = / connect / app-socket]
更多相关内容 -
webSocket连接失败,页面报错websocket connect ******faield
2021-11-16 16:44:52所以只能是web项目的问题,花了我四个小时,一点点看web项目的各个配置文件,最终发现是在设置跨域请求时,请求的allowedOrigins没有设置为*,导致连接失败。原因是websocket通讯的建立阶段是依赖于http协议的。最初...项目中需要开发一个即时通讯功能,因此用到了websocket来实现双向通信,起初websocket接入点是在service层,因为要从页面发起请求接入,因此把接入点搬到了web层,此时启动项目后,进行连接测试时报错:
因为在service层时连接是正常的,所以只能是web项目的问题,花了我四个小时,一点点看web项目的各个配置文件,最终发现是在设置跨域请求时,请求的allowedOrigins没有设置为*,导致连接失败。原因是websocket通讯的建立阶段是依赖于http协议的。最初的握手阶段是http协议,握手完成后才切换到websocket协议。
-
Android websocket连接失败
2021-05-28 06:27:42我正在开发一个简单的应用程序,它只是应该连接到websocket服务器并发送简单的文本消息。我使用nv-websocket-client作为websocket的库。我似乎无法连接到...Android websocket连接失败public class MainActivit...我正在开发一个简单的应用程序,它只是应该连接到websocket服务器并发送简单的文本消息。我使用nv-websocket-client作为websocket的库。我似乎无法连接到服务器。我使用wireshark来确定设备没有收到数据,也没有数据通过我使用过的任何端口进入,所以我留下了应用程序出现问题的事实。Android websocket连接失败
public class MainActivity extends AppCompatActivity{
private static final String SERVER = "ws://192.168.2.177:80";
private static final int TIMEOUT = 5000;
WebSocketFactory factory = new WebSocketFactory();
WebSocket ws;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void connectWebsocket(View view) throws IOException{
ws = factory.createSocket(SERVER);
try{ws.connect();}
catch (OpeningHandshakeException e){
Log.d("OpeningHandshake", "Hello");
}
catch (WebSocketException e1){
Log.d("WebsocketException",e1.getError().toString());
}
}
public void sendMessage(View view){
ws.sendText("Sending Message...");
}
}
这是我的主要活动。 这是我的布局。
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.company.websockettest.MainActivity">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Socket Test" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Press to connect"
android:onClick="connectWebsocket"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Press To send"
android:onClick="sendMessage"/>
我得到一个SOCKET_CONNECT_ERROR。而图书馆的文件似乎并没有给我太多的错误本身。感谢任何帮助,我可以得到。
+0
从服务器中删除ws://。 –
+0
我试过了。我也收到如下错误。 “引起:java.lang.IllegalArgumentException:索引0处的方案中的非法字符:192.168.2.177:8000” –
-
websocket连接失败后多久会触发error事件?
2021-01-14 03:14:20问题描述websocket连接失败后多久会触发error事件?这个时间有没有方法可以设置问题出现的环境背景最近项目中用到了websocket,但是连接地址的端口不确定,因此前端需要从某个端口(例如ws://127.0.0.1:9000)开始累加...问题描述
websocket连接失败后多久会触发error事件?这个时间有没有方法可以设置
问题出现的环境背景
最近项目中用到了websocket,但是连接地址的端口不确定,因此前端需要从某个端口(例如ws://127.0.0.1:9000)开始累加去建立连接,然后通过onerror事件判断连接是否成功,但运行时发现从尝试连接到连接失败触发error事件的时间比较久,大概需要1s。这样如果枚举100次才连接成功,就需要占用100s的时间,效率太慢不可行。
function connectWebSocket(port = 9900) {
return new Promise((resolve, reject) => {
if (ws && ws.readyState === WebSocket.OPEN) {
resolve(ws)
} else {
// 尝试建立连接
console.log('connect', '-------', Date.now())
ws = new WS(`ws://127.0.0.1:${port.toString()}`)
ws.onopen = () => {
// 连接成功
console.log('open', '-------', Date.now())
resolve(ws)
}
// 连接失败触发回调
ws.onerror = () => {
console.log('error', '-------', Date.now())
reject()
}
}
}).catch(() => {
// 累加端口重建websocket
if (port < 65534) {
const newPort = port + 1
return connectWebSocket(newPort)
} else {
ws.close()
ws = null
throw new Error('无法连接服务器')
}
})
}
尝试方法
运行发现open事件大概在建立连接20ms后触发,所以我试图通过setTimeout的方式来代替error事件,代码如下:
function connectWebSocket(port = 9900) {
return new Promise((resolve, reject) => {
// 加入isOpen变量来websocket是否握手成功
let isOpen = false
if (ws && ws.readyState === WebSocket.OPEN) {
resolve(ws)
} else {
console.log('connect', '-------', Date.now())
ws = new WS(`ws://127.0.0.1:${port.toString()}`)
ws.onopen = () => {
// 握手成功设置标识为true
isOpen = true
console.log('open', '-------', Date.now())
resolve(ws)
}
// 需要确保定时器的回调在open事件之后执行
setTimeout(() => {
console.log(5, '-------', Date.now(), isOpen)
if (!isOpen) {
// 如果isOpen为false,说明没有握手成功,接着递归建立连接
ws.close()
reject()
}
}, 20)
// ws.onerror = () => {
// console.log('error', '-------', Date.now())
// reject()
// }
}
}).catch(() => {
if (port < 65534) {
const newPort = port + 1
return connectWebSocket(newPort)
} else {
ws.close()
ws = null
throw new Error('无法连接服务器')
}
})
}
通过以上代码可以把判断是否需要重连的时间压缩到20ms左右,但问题在于我不确定open的触发时机能不能保证在20ms内(可能与电脑性能有关?)。
这种方式是否可行呢,或者定时器的时间设置为多少比较合适。
回答
前端一个个端口扫描?天哪,我听到了网卡在哭泣。
前端不知道地址可以发一个请求先去问一下后端啊,后端自己起的 websocket 服务总归会知道自己用的是什么端口吧。为什么前端要闭着眼睛一个个试呢?
-
websocket连接失败!!
2020-04-03 18:03:46连接socket的时一定要把url对上: 我的127.0.0.1就是localhost 如果tomcat配置的是 那这里也要改成 -
服务器端websocket连接失败
2020-06-02 00:55:11Springboot+WebSocket在本地正常,放到服务器连接失败。 websocket连接路径: ws://域名/api/ws/ 我这里是nginx配置的问题,之前nginx只配置了 # 访问api接口 location /api { proxy_set_header Host $host; proxy... -
thinkphp6 workerman和websocket连接失败
2022-04-28 21:08:23使用thinkphp6中worker的安装方式配置后开启,放行端口websocket依旧连接失败,希望赐教 如图: 代码: -
websocket连接失败
2015-06-26 23:31:21websocket连接失败@(markdown) 最近项目里调试websocket相关的nodejs实现的server,刚接触web开发的小伙伴们对websocket协议不熟悉,遇到问题很容易悲剧。这里只说自己理解的部分以及解决问题的经验吧。 首先,... -
websocket系列:采用Nginx代理后websocket连接失败的问题
2021-09-06 17:35:06Nginx常规的代理转发配置是不支持websocket协议的。 本节主要介绍如何让Nginx代理支持websocket协议。 一、Nginx官网说明 Nginx对websocket协议的支持: http://nginx.org/en/docs/http/websocket.html location /... -
websocket 连接失败后台无反应的解决方法之一
2021-08-24 16:15:15写好websocket以后测试一直连接失败,但是后台没有反应,在网上查了很多资料都没有解决 最后查了好久发现websocket的请求受到拦截器的影响,添加白名单就可以了,网上websocket代码很多我就不贴了,贴一下白名单的yml代码... -
WebSocket部署到服务器出现连接失败问题的分析与解决
2020-10-19 02:33:36主要给大家介绍了关于WebSocket部署到服务器出现连接失败问题的分析与解决方法,文中给出了详细的介绍供大家参考学习,文末也给出了demo下载地址,需要的朋友们可以下载学习,下面随着小编来一起学习学习吧。 -
WebSocket 连接失败,报错400
2021-02-19 10:56:13WebSocket 连接失败,报错400 WebSocket握手期间出错,响应码:400。 出现原因:可能你的应用程序版本低于nginx。 我的解决方式:告诉nginx在和服务端通信的时候,使用http/1.1,并且Nginx当想要使用WebSocket时由... -
iis部署后,局域网访问时websocket能成功,外网访问时能登录进去,但websocket连接失败
2020-05-07 18:20:31项目部署到iis上以后,外网访问可以登录成功,但websocket连接失败,局域网访问时,websocket能连接成功接收数据包。本机固定ip:192.1.1.102 联通拉的专线固定ip: 25.1.1.1;路由器端设置分配给本机的固定ip:192.1.... -
WebSocket连接失败。 Websocket握手期间出错。响应代码403?
2021-07-16 14:48:00This is the message I'm getting for my Wordpress site:"WebSocket connection to 'wss://public-api.wordpress.com/pinghub/wpcom/me/newest-note-data' failed: Error during WebSocket handshake: Unexpected r... -
websocket 解决链接失败问题
2018-01-10 10:52:17tomcat运行在 5.0+以上版本。发包大小超出范围找到项目...-- websocket 发送内容长度设置(默认8192字节) --> <param-name>org.apache.tomcat.websocket.textBufferSize <param-value>5242800 </context-param> -
websocket连接失败,进不了函数on_open和on_message
2019-10-29 17:30:10websocket连接大概如下,但是运行程序时,函数on_open、on_message都没有被执行,完全没有进入?想问下是什么情况?感谢大佬告知!!!急!!! ``` def SendWebSocket: class __init__(self, file,url): ... -
websocket 连接失败
2021-08-23 17:50:46 -
websocket连接失败原因之一
2014-08-18 19:24:00我最近在用websocket,发现代码没有问题,可是一直连接不上server端,因为公司网络问题,必须用代理才能访问外网,调试了很久,发现websocket不支持代理,如果想用websocket实现,客户端和服务端通信,请关闭代理。... -
WebSocket连接失败:WebSocket打开握手被取消
2021-07-16 14:50:20and this is where the request returns the error: WebSocket connection to 'wss://[URL]:4433/projects/socket' failed: WebSocket opening handshake was canceled. Binding the socket to 0.0.0.0 results in ... -
Spring Websocket
2017-10-23 08:43:46我自己整理的类似于聊天室功能,websocket建立长连接,订阅和发送消息功能 -
django中websocket连接失败,ngnix返回404的可能性
2020-07-31 14:00:474、就是主页中websocket连接失败 错误信息: pace.min.js:2 WebSocket connection to 'wss://chat.uulxl2020.com/msg/' failed: Error during WebSocket handshake: Unexpected response code: 400 代码: ... -
HTML5 / PHP WebSocket连接失败:WebSocket握手期间出错:意外响应代码:200
2018-02-09 11:19:37<p>"WebSocket connection to failed: Error during WebSocket handshake: Unexpected response code: 200" <p>This is my apache Configuration <pre><code>ServerName 192.168.56.106 ProxyRequests off ... -
vue websocket 连接实战及遇到的问题
2020-12-23 22:12:23常规的连接方法websocket () {let ws = new WebSocket('ws://localhost:8080')ws.onopen = () => {// Web Socket 已连接上,使用 send() 方法发送数据ws.send('Holle')console.log('数据发送中...')}ws.onmessage... -
Tomcat 部署Websocket后连接失败问题
2021-06-18 11:51:58应用如果启动websocket server后,Tomcat和Apache都需要相应的配置支持 1. 首先Apache需要配置代理服务 在Httpd.conf中加入下面一行 -
WebSocket部署服务器但外网无法连接的解决方法
2020-10-19 02:49:29WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例如Chrome,Safari,Firefox,Opera,IE等等,下面这篇文章主要给大家介绍了关于WebSocket部署服务器但外网无法连接的解决方法,需要的朋友可以... -
WebSocket无法连接问题
2021-10-21 10:48:42rosbridge连接不稳定问题 问题描述: Windows端web连接Ubuntu端rosbridge server,出现有时能连上有时连不上的问题。 最近一次发生连接不上的情况是,前一天可以连接成功,第二天,重新启动rosbridge server,从... -
项目上线后nginx代理后websocket 连接不上
2022-05-06 12:08:45开发环境与测试环境websocket都能正常连接,正式环境用内网ip也正常,唯独用公网ip连接失败 --- # 原因分析: > 提示:这里填写问题的分析: 公网ip经过nginx代理,nginx代理默认不支持长连接,而wobsocket是... -
websocket连接不成功的原因
2020-03-25 14:23:00整合websocket和RabbitMQ时,需要使用tomcat9.0版本,自己当时用的tomcat版本是7.0,一直连接不成功,切换tomcat9.0之后,ok了。