【转】

https://www.cnblogs.com/chrischeng/p/10237523.html

最近在做一个WebSocket项目,后台使用了Stomp协议的WebSocketConfigurer,但是前端在测试的时候,发现一个很奇怪的问题:

本地的测试代码,最初我使用了Java+SockJS实现:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketStompConfig implements WebSocketMessageBrokerConfigurer { @Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/density")
.setAllowedOrigins("*") //解决跨域问题
.withSockJS();
} @Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
}
}
1
2
3
var url = "http://172.18.171.167:8080/density"
var socket = new SockJS(url)
var stompClient = Stomp.over(socket)

这种情况下自测可以通过

但是前端反应,SockJS不支持同时打开多个Socket订阅(我也不清楚到底是否真实,懒得追究了),于是需要研究如何在前端通过原生WebSocket的方式而不是SockJS的方式建立客户端(BTW 我一直觉得这是前端的活儿,我也不明白我一个后端为什么要搞这个)

按照网上的教程,写了如下的代码:

var stompClient = Stomp.client('ws://172.18.171.167:8080/density');

        stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected:' + frame);
stompClient.subscribe('/topic/callback', function (response) {
showCallback(response.body);
}); });

但是这时无论如何,前端都会报如下的错误:

failed: Unexpected response code: 200 

试了很多种方法,但是都没法儿解决问题,最终在Stack Overflow的一个回答下面的Comment里面找到答案:

将原来的URL

ws://172.18.171.167:8080/density/

改为

ws://172.18.171.167:8080/density/websocket

生效!!!

具体为什么,我也不知道。。。Orz

WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法的更多相关文章

  1. Sub-process /usr/bin/dpkg returned an error code (1)错误解决办法

    之前通过wine安装了一款软件,不经常用,也没有拆卸 可是之后呢,每次更新都要提示更新那个软件,更新的时候又总是找不到更新源 无奈之下,我通过软件中心移除wine,没想到竟然碰到依赖问题,没有拆卸成功 ...

  2. MySQL更新时Error Code:1093和Error Code:1175的解决办法

    Error Code: 1093. You can't specify target table 'ws_product' for update in FROM clause 这个是我们在使用upda ...

  3. Uubntu E: Sub-process /usr/bin/dpkg returned an error code问题的解决办法

      cd /var/lib/dpkg   sudo mv info info.bak   sudo mkdir info      apt-get --reinstall install udev m ...

  4. Error reading from file 解决办法

    最近安装程序遇见这个问题: Error reading from file. 解决办法: 给这个程序添加权限: 添加SYSTEM的读写改..如果比较懒,直接全部允许. 然后Retry.

  5. MySQL 执行SQL脚本 报ERROR 1231 (42000)的解决办法【转】

    今天在source mysqldump 备份文件时,发现导入的过程中报如下的错误: ERROR 1231 (42000): Variable 'time_zone' can't be set to t ...

  6. mysql学习笔记1---mysql ERROR 1045 (28000): 错误解决办法

    mysql ERROR 1045 (28000): 错误解决办法 在启动mysql服务后,登陆mysql的窗口的时候,执行mysql命令,结果报错,没法登陆.   (在安装mysql和配置的时候,我是 ...

  7. 关于hexo博客自定义域名后gitment评论系统登陆出现redirect error返回主页的解决办法

    title: 关于hexo博客自定义域名后gitment评论系统登陆出现redirect error返回主页的解决办法 toc: false date: 2018-04-16 22:57:50 cat ...

  8. Mysql 编译报错 g++: internal compiler error: Killed (program cc1plus) 解决办法

    g++: internal compiler error: Killed (program cc1plus) 解决办法 g++: internal compiler error: Killed (pr ...

  9. MySQL Workbench “Error Code: 1175” 的解决方法

    转自:http://www.linuxidc.com/Linux/2012-04/59333.htm 当用MySQL Workbench进行数据库的批量更新时,执行一个语句会碰到以下错误提示: Err ...

随机推荐

  1. [LeetCode] 502. IPO 上市

    Suppose LeetCode will start its IPO soon. In order to sell a good price of its shares to Venture Cap ...

  2. Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数

    在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一:   . ./subscript.sh 方法二:   source ./subscript.sh 注意: 1.两个点之 ...

  3. ThinkPHP5.1的数据库链接和增删改查

    一.数据库的链接方式 <?phpnamespace app\index\controller;use think\Db; class Demo{//1.全局配置 config/database. ...

  4. 可扩展标记语言XML之二:XML语言格式规范、文档组成

    大家好,小乐又来了,好久不见!这次接着上次可扩展标记语言XML之一:XML概念,作用,示例,继续讲述XML. 一.格式良好的 xml 1.语法规范: 1).必须有 XML 文档声明: <?xml ...

  5. 2、Maven的简介和配置

    1.下载Maven  apche-maven-3.5.2 2. 三.maven简介 1.基于Ant的构建工具,Ant有的功能Maven都有,额外添加了其他的功能 2.运行原理图 2.1本地仓库:计算机 ...

  6. Docker的基础教程(基于CentOS)

    1.查看版本 Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看你当前的内核 ...

  7. Java开发笔记(一百三十九)JavaFX的输入框

    循着Swing的旧例,JavaFX仍然提供了三种文本输入框,分别是单行输入框TextField.密码输入框PasswordField.多行输入框TextArea.这些输入框都由抽象类TextInput ...

  8. java笔记2—函数

    函数: 1.什么是函数?       函数是定义在类中具有特定功能的一段独立小程序.       函数也称方法. 2.函数的格式:      [ 修饰符 ] 返回值类型 函数名(参数类型 形式参数)  ...

  9. Fedora30 - Xrdp 远程桌面

    Windows RDP 访问 Fedor 远程桌面需要使用 Xrdp 开源工具. [lipandeng@localhost ~]$ sudo dnf install xrdp [lipandeng@l ...

  10. flink linux安装 单机版

    1.下载二进制的Flink,根据你喜欢的Hadoop/Scala版本选择对应的Flink版本. https://flink.apache.org/downloads.html2.选择存放目录 解压 f ...