关于在tomcat上布置IDEA项目websocket报错的问题

本文详细介绍了在Tomcat上部署IDEA WebSocket项目时遇到的四种常见错误:1) ServerEndpointExporter报错,解决方案是注释掉IDEA配置;2) tomcat版本问题,通过尝试tomcat7.0解决;3) 访问URL问题,可能需使用服务器IP代替localhost;4) jar包冲突,解决办法涉及调整tomcat配置context.xml文件。此外,还提及了web版本问题,Springboot的web依赖需降至1.5.6版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误类型1:ServerEndpointExporter报错

        这个错是因为在IDEA使用自带的tomcat来跑项目需要注入这个,但是外置tomcat中不需要注入,就直接讲这个config直接注释掉即可。

错误类型2:tomcat版本的问题

        之前布置项目的时候使用的都是tomcat8.5这个版本,一直没有成功,查资料发现tomcat主页自带了一个example测试,里面有一个websocket测试,我用这个测试,就一直报错500这个错。所以我感觉可能是tomcat版本的毛病,于是我试了tomcat7.0版本的example里面的websocket测试,成功连接!!!我也不知道为啥,但是先解决问题比较重要。

 

错误类型3:访问url的问题(不确定)

        这个是在ws访问的时候,好像localhost不能用,得使用具体的ip地址,我就改成了我服务器的地址,我没有进一步测试,但是可以尝试一下。

 

错误类型4:jar包冲突的问题

        jar包冲突的问题在于tomcat好像自带了websocket需要用到的两个jar包,一个websocket-api.jar,另一个是tomcat7-websocket.jar,idea生成的项目里面好像也有这两个。不过我在pom里面把这两个依赖都给注释了再布置还是有问题,我就留着了。这两个依赖是

然后是关键,在tomcat的配置conf文件夹下,找到context.xml文件,在<Context>里面加入下面这句话。

参考来源https://blog.youkuaiyun.com/mmake1994/article/details/88366945

<Loader delegate="true"></Loader>

 

PS 额外的错误:web版本的问题

        将war包从8.5版本移动到7.0版本的时候,启动项目报了错,类似Catalina default啥的错误信息,这是因为Springboot的web依赖版本的问题,需要将版本改成1.5.6版本,

 

### 关于 WebSocket 报错解决方案 #### 错误描述 当尝试通过微信小程序建立 WebSocket 连接时,可能会遇到 `Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received` 的错误提示[^1]。此问题通常发生在服务器未能正确响应带有特定协议头的请求。 #### 可能的原因 该类错误主要源于客户端与服务端之间的握手过程出现问题。具体来说,在发起 WebSocket 请求时,如果指定了子协议(即 `'Sec-WebSocket-Protocol'` 头部字段),而服务器并未对此作出回应,则会触发上述异常情况。此外,若在 WebSocket 尚未进入 OPEN 状态之前便调用了 send 方法也会引发类似的连接失败现象[^2]。 #### 解决方案建议 为了有效处理此类问题,可以从以下几个方面入手: ##### 客户端调整 确保仅在 WebSocket 成功开启之后才发送数据。可以通过监听 onopen 事件来实现这一点: ```javascript ws.onopen = function(event) { console.log("Connection opened."); ws.send('Message from client'); }; ``` 同时,在实际应用中应当先验证 WebSocket 当前的状态是否允许传输消息: ```javascript if (ws.readyState === WebSocket.OPEN) { ws.send('Data to be sent'); } ``` ##### 服务端配置优化 对于采用 Django Channels 构建的服务端而言,需确认已按照官方文档完成必要的设置工作,特别是关于支持自定义协议的部分[^3]。这可能涉及到修改项目的路由文件以及适当扩展消费者逻辑以适应不同类型的 WebSocket 协议需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值