tomcat7与外部websocket冲突解决方啊

一、问题描述

在前端的console报错:

connect to "localhost:8080/....." failed

翻了很久也没有答案,直到我看到一篇文章说不要引入依赖包

二、问题分析

看到这一片红色我们第一反应就是导入依赖

 于是我导入了以下依赖:

但是在tomcat7之后会自带weisocket包,再次导入会有冲突,这就是一直连接不上的原因了

三、解决办法

 记得加上<provided>标签

 附上可以直接复制的代码:

<dependency>
  <groupId>javax.websocket</groupId>
  <artifactId>javax.websocket-api</artifactId>
  <version>1.1</version>
  <scope>provided</scope>
</dependency>

四、测试代码

这段代码不是我的,之前拿来测试,发现没有用就把网页关了(对不起了),刚刚发现这个问题后再次测试,代码完美运行,所以给各位分享一下:

后端代码(爆红没关系,直接运行即可)

import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/websocketendpoint")


public class WsServer {

    @OnOpen
    public void onOpen(){
        System.out.println("Open Connection ...");
    }

    @OnClose
    public void onClose(){
        System.out.println("Close Connection ...");
    }

    @OnMessage
    public String onMessage(String message){
        System.out.println("Message from the client: " + message);
        String echoMsg = "Echo from the server : " + message;
        return echoMsg;
    }

    @OnError
    public void onError(Throwable e){
        e.printStackTrace();
    }

}

前端代码(记得把端口号后面的项目名换成自己的)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Tomcat WebSocket</title>
</head>
<body>
<form>
    <input id="message" type="text">
    <input onclick="wsSendMessage();" value="Echo" type="button">
    <input onclick="wsCloseConnection();" value="Disconnect" type="button">
</form>
<br>
<textarea id="echoText" rows="5" cols="30"></textarea>
<script type="text/javascript">
    var webSocket = new WebSocket("ws://localhost:8080/ChatMoment/websocketendpoint");
    var echoText = document.getElementById("echoText");
    echoText.value = "";
    var message = document.getElementById("message");
    webSocket.onopen = function(message){ wsOpen(message);};
    webSocket.onmessage = function(message){ wsGetMessage(message);};
    webSocket.onclose = function(message){ wsClose(message);};
    webSocket.onerror = function(message){ wsError(message);};
    function wsOpen(message){
        echoText.value += "Connected ... \n";
    }
    function wsSendMessage(){
        webSocket.send(message.value);
        echoText.value += "Message sended to the server : " + message.value + "\n";
        message.value = "";
    }
    function wsCloseConnection(){
        webSocket.close();
    }
    function wsGetMessage(message){
        echoText.value += "Message received from to the server : " + message.data + "\n";
    }
    function wsClose(message){
        echoText.value += "Disconnect ... \n";
    }

    function wsError(message){
        echoText.value += "Error ... \n";
    }
</script>
</body>
</html>

运行成功后前端页面:

可以往输入框输入内容,按下Echo按钮

 如果失败会显示Disconnected

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值