vertx是一个轻量,灵活的后端框架,最近在使用vertx时使用了它的websocket,对于websocket相信搞过开发的都 不会很陌生,在vertx中的使用也很简单,大概如下
HttpServerOptions options =new HttpServerOptions();
options.setReuseAddress(true).setSoLinger(0);
options.setPort(9000);
vertx.createHttpServer(options).websocketHandler(websocket-> {
//连接成功时的处理
}).listen(listenHandler-> {
//监听成功的处理
});
就在我以为王子和灰姑娘从此过上了幸福生活的时候,悲剧开始了,客户端始终连接不上,显示无法建立连接,我是在本机调试的,IP都是127.0.0.1,不可能有防火墙的问题,那是什么原因呢?于是开始各种折腾,尝试改成各种写法,寥寥几行代码改来改去又能改出什么花呢。百度和谷歌上搜索相关问题也都是简单带过,似乎大家一路走过都是平坦大道,唯独就是我掉坑里了。开始有点怀疑人生了。郁闷的出去吃了个饭,散了个步,回来后仍然是一筹莫展,无意间发现了charles,对,就是这个charles,这个抓包工具charles,发现了它我就知道我找到了答案,果不其然,关掉charles的windows proxy,websocket就愉快地连上了!
这下大家知道为什么我叫它伪技术问题了吧,最终问题的解决不是因为代码本身,而是开发工具使了拌子。charles工具本身是非常好用的,相信也是很多开发同学日常工作中最亲密的伙伴。包括这次这个,一共有两个比较著名的坑,希望大家注意了
1.如果windows proxy在勾选的状态关掉charles,浏览器访问网站是打不开的,这时也请注意把检查charles作为排错的一个选项
2。windows proxy在勾选状态时,呃,又是这个windows proxy选项,ws://请求时无法访问的,千万注意了。
好了,问题解决,自信心瞬间恢复。程序猿嘛,就这点出息!