- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试将 Spring websockets (STOMP) 与 Vue 结合使用,但不知道该怎么做,甚至不知道该怎么做。我的 websockets 使用纯 JS,但是当我尝试使用 Vue 时,我卡住了。这是我的 Vue 代码:
var app = new Vue({
el: '#app',
data: {
stompClient: null,
gold: 0
},
methods: {
sendEvent: function () {
this.stompClient.send("/app/hello", {}, JSON.stringify({'name': $("#name").val()}));
}
},
created: function () {
this.stompClient = Stomp.over(new SockJS('/gs-guide-websocket'));
this.stompClient.connect()
this.stompClient.subscribe('/topic/greetings', function (greeting) {
console.log(JSON.parse(greeting.body).content);
});
},
})
我的连接和发送功能正常,我可以在后端看到消息,但问题出在订阅功能上。它需要一个回调函数,但这永远不会触发。我还尝试在 vue 中创建一个方法并调用它
this.stompClient.subscribe('/topic/greetings', vueFunc())
但这也不起作用。我在 https://github.com/FlySkyBear/vue-stomp 找到了一些图书馆但我不知道如何使用它,它看起来真的很乱。那我宁愿使用纯 JS。
谁有解决办法?谢谢
最佳答案
这是使用 Spring Boot Websocket (STOMP) 和 Vue CLI 的工作示例。(这里有更详细的描述http://kojotdev.com/2019/07/using-spring-websocket-stomp-application-with-vue-js/)
在WebSocketConfig
中添加允许的来源
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/gs-guide-websocket")
.setAllowedOrigins("http://localhost:8081")
.withSockJS();
}
现在启动 Vue CLI 项目并:
npm install sockjs-client
npm install webstomp-client
npm install bootstrap@3
只是为了布局添加 .vue 组件:
<template>
<div>
<div id="main-content" class="container">
<div class="row">
<div class="col-md-6">
<form class="form-inline">
<div class="form-group">
<label for="connect">WebSocket connection:</label>
<button id="connect" class="btn btn-default" type="submit" :disabled="connected == true" @click.prevent="connect">Connect</button>
<button id="disconnect" class="btn btn-default" type="submit" :disabled="connected == false" @click.prevent="disconnect">Disconnect
</button>
</div>
</form>
</div>
<div class="col-md-6">
<form class="form-inline">
<div class="form-group">
<label for="name">What is your name?</label>
<input type="text" id="name" class="form-control" v-model="send_message" placeholder="Your name here...">
</div>
<button id="send" class="btn btn-default" type="submit" @click.prevent="send">Send</button>
</form>
</div>
</div>
<div class="row">
<div class="col-md-12">
<table id="conversation" class="table table-striped">
<thead>
<tr>
<th>Greetings</th>
</tr>
</thead>
<tbody>
<tr v-for="item in received_messages" :key="item">
<td>{{ item }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</template>
<script>
import SockJS from "sockjs-client";
import Stomp from "webstomp-client";
export default {
name: "websocketdemo",
data() {
return {
received_messages: [],
send_message: null,
connected: false
};
},
methods: {
send() {
console.log("Send message:" + this.send_message);
if (this.stompClient && this.stompClient.connected) {
const msg = { name: this.send_message };
this.stompClient.send("/app/hello", JSON.stringify(msg), {});
}
},
connect() {
this.socket = new SockJS("http://localhost:8080/gs-guide-websocket");
this.stompClient = Stomp.over(this.socket);
this.stompClient.connect(
{},
frame => {
this.connected = true;
console.log(frame);
this.stompClient.subscribe("/topic/greetings", tick => {
console.log(tick);
this.received_messages.push(JSON.parse(tick.body).content);
});
},
error => {
console.log(error);
this.connected = false;
}
);
},
disconnect() {
if (this.stompClient) {
this.stompClient.disconnect();
}
this.connected = false;
},
tickleConnection() {
this.connected ? this.disconnect() : this.connect();
}
},
mounted() {
// this.connect();
}
};
</script>
<style scoped>
</style>
运行项目并测试,它应该默认从8081端口启动。
关于javascript - Spring stomp websockets with vue.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46818674/
我正在通过 Sock.JS 客户端发送 stomp 消息。当我断开服务器连接时,我希望在客户端上显示一条警告消息。为此,我实现了服务器端心跳 stompClient = Stomp.over(sock
我们有一个 Spring over WebSockets 连接,我们正在传递一个 CONNECT框架: CONNECT\naccept-version:1.2\nheart-beat:10000,10
当用户使用 @SubscribeMapping 注释订阅 stomp 用户目的地时,我试图得到通知。我的想法是在它加入时发送一些初始化数据。 虽然我无法让这个工作: Javascript: stomp
我正在开发一个利用 websockets 工具的 Spring 应用程序。为了使其更健壮,我使用了 STOMP/SimpleBrokerMessageHandler,如文档中所述。一切顺利,我已经能够
从 Spring 4 开始,我们支持 STOMP (子)协议(protocol)超过 WebSocket .我确实了解 WebSocket 的好处与 HTTP 相比,使用 STOMP 的用途和好处超过
STOMP 规范规定订阅必须有id header。 https://stomp.github.io/stomp-specification-1.2.html#SUBSCRIBE_id_Header S
有没有办法获取STOMP客户端IP地址?我正在拦截入站 channel ,但我看不到任何检查 IP 地址的方法。 任何帮助表示赞赏。 最佳答案 您可以在与 HandshakeInterceptor 握
我是 Flutter 新手。我正在尝试连接到使用 stomp 的 spring websocket,但连接失败。我正在使用 stomp_dart_client 0.3.3。 Spring服务器工作正常
我正在尝试在 puppetmaster(开源 puppet )上设置 mcollective/activemq。我遇到了 ActiveMQ 无法识别 Stomp 协议(protocol)的问题。这是我
我尝试使用 sockjs 和 stomp.js ( http://jmesnil.net/stomp-websocket/doc/ ) 为 vert.x stomp 服务器编写一个简单的 javasc
我发现 Spring WebSocket Support 的当前文档令人惊讶。指导用户使用 stomp.js用于他们的客户端 JavaScript 实现。 这个项目,在它的 GitHub 页面上的自述
以下测试客户端代码(使用 https://github.com/jmesnil/stomp-websocket )在 JBoss 7.0.1 中产生异常: var client = Stomp.cli
我在 Websockets 上使用带有 STOMP 协议(protocol)的 Springwebsockets,并且我正在使用内存中的 borker。我想向特定用户发送消息。 在客户端,我订阅了一个
我正在使用以下代码创建/订阅主题并处理消息。有时连接丢失并且错误显示: Whoops! The connection was lost... 我想知道有没有办法重新连接它。是否可以在错误回调中或在方法
我正在使用 Spring WebSockets。它运行良好,但现在我需要在将消息发送到 Web 客户端之前对其进行修改。 因此我创建了以下拦截器: @Component public class St
我有一个要求是一些 STOMP websocket 连接需要同步处理。 意思是我有一个客户(spring)订阅了一个主题(“/topic”)。 我有一个服务器 (spring),它定义了代理 ("/t
我目前的stomp客户端流程设计如下: 打开stomp连接(发送CONNECT帧) 订阅提要(发送 SUBSCRIBE 帧) 做一个循环以持续接收提要: while (true) {
我想知道是否有一种方法可以在发送消息之前检查消费者是否正在运行?我正在使用最新的 php STOMP,并且正在努力查看是否有一种方法可以在发送消息之前检测它是否正在运行,并在队列中建立消息。 谢谢,史
我正在寻找 Stomp.js 或类似的库。我没有发现使用 angular2.rc6/final 示例或 lib。我怎样才能重新放置 Stomp.js 其他东西?在我之前使用 Angular 1.X 的
我使用的是 Artemis 2.6.2,只有 STOMP 和以下星座: 经纪人: 没有在 broker.xml 中配置队列,一切都是自动创建的。 服务器: 订阅目标 TaskResponse 没有选择
我是一名优秀的程序员,十分优秀!