Vue 通过@stomp/stompjs建立长链接 无法进入connect回调
<template>
<div>
<h1>WebSocket 长连接示例</h1>
<button @click="startConnection">开始连接</button>
<button @click="stopSubscription" :disabled="!isConnected">取消订阅</button>
<button @click="closeConnection" :disabled="!isConnected">关闭连接</button>
<input v-model="messageToSend" placeholder="输入消息">
<button @click="sendMessage" :disabled="!isConnected">发送消息</button>
<div v-if="receivedMessage">
<h2>收到的消息:</h2>
<p>{{ receivedMessage }}</p>
</div>
</div>
</template>
<script>
import { Stomp } from '@stomp/stompjs';
export default {
data() {
return {
client: null,
subscription: null,
url: 'ws://127.0.0.1:9000',
topic: '/topic/test',
customHeaders: {},
isConnected: false,
receivedMessage: null,
messageToSend: '',
};
},
methods: {
startConnection() {
console.log('尝试连接到', this.url);
this.client = Stomp.client(this.url);
this.client.configure({
connectHeaders: this.customHeaders,
heartbeatIncoming: 10,
heartbeatOutgoing: 20,
onConnect: (frame) => {
console.log('连接成功', frame);
this.isConnected = true;
this.subscription = this.client.subscribe(this.topic, (message) => {
console.log('收到消息', message.body);
this.receivedMessage = message.body;
});
},
onStompError: (error) => {
console.error('STOMP 错误', error);
this.handleConnectionError(error);
},
onWebSocketClose: (event) => {
console.error('连接关闭', event);
this.isConnected = false;
},
onWebSocketError: (event) => {
console.error('WebSocket 错误', event);
this.handleConnectionError(event);
},
debug: (str) => {
console.log('+++++ DEBUG +++++');
console.log(new Date(), str);
}
});
this.client.activate();
},
stopSubscription() {
if (this.subscription) {
this.subscription.unsubscribe();
console.log('取消订阅');
}
},
closeConnection() {
if (this.client && this.isConnected) {
this.client.deactivate(() => {
console.log('关闭连接');
this.isConnected = false;
});
}
},
sendMessage() {
if (this.client && this.isConnected) {
const message = { text: this.messageToSend };
this.client.publish({ destination: this.topic, body: JSON.stringify(message) });
console.log('消息已发送', message);
} else {
console.log('WebSocket 未连接');
}
},
handleConnectionError(error) {
console.error('WebSocket 连接错误', error);
this.isConnected = false;
}
},
};
</script>
<style scoped>
button {
margin: 10px;
}
input {
margin: 10px;
}
</style>
const WebSocket = require('ws');
// 指定自定义端口号
const PORT = 9000;
const server = new WebSocket.Server({ port: PORT });
server.on('connection', (ws) => {
console.log('客户端已连接');
ws.on('message', (message) => {
console.log(`收到消息: ${message}`);
// 发送响应消息
ws.send(`服务器收到: ${message}`);
});
ws.on('close', () => {
console.log('客户端已断开连接');
});
ws.on('error', (error) => {
console.log(`WebSocket 错误: ${error}`);
});
});
console.log(`WebSocket 服务器在 ws://localhost:${PORT} 运行`);
如上分别为前后端代码 点击开始链接 启动后端ws服务 后端控制台提示客户端已连接,但是前端onConnect回调一直无法进入 ,只有debug事件回调正常
目前不确定是否真正建立了链接 希望获取onConnect的回调事件
是版本不同的缘故么,看着跟官方示例不太一样
https://github.com/stomp-js/stompjs
<!--
JSPM Generator Import Map
Edit URL: https://generator.jspm.io/#U2NgYGBkDM0rySzJSU1hcCguyc8t0AeTWcUO5noGega6SakliaYAYTzJAykA
-->
<script type="importmap">
{
"imports": {
"@stomp/stompjs": "https://ga.jspm.io/npm:@stomp/stompjs@7.0.0/esm6/index.js"
}
}
</script>
<!-- ES Module Shims: Import maps polyfill for modules browsers without import maps support (all except Chrome 89+) -->
<script
async
src="https://ga.jspm.io/npm:es-module-shims@1.5.1/dist/es-module-shims.js"
crossorigin="anonymous"
></script>
<script type="module">
import { Client } from '@stomp/stompjs';
const client = new Client({
brokerURL: 'ws://localhost:15674/ws',
onConnect: () => {
client.subscribe('/topic/test01', message =>
console.log(`Received: ${message.body}`)
);
client.publish({ destination: '/topic/test01', body: 'First Message' });
},
});
client.activate();
</script>
import { Client } from '@stomp/stompjs';
import { WebSocket } from 'ws';
Object.assign(global, { WebSocket });
const client = new Client({
brokerURL: 'ws://localhost:15674/ws',
onConnect: () => {
client.subscribe('/topic/test01', message =>
console.log(`Received: ${message.body}`)
);
client.publish({ destination: '/topic/test01', body: 'First Message' });
},
});
client.activate();
如何判断H5是否通过通用链接成功唤起了app? 有什么检测方法吗?比如之前scheme的跳转,可以通过监听页面的hidden事件?
本文向大家介绍什么是Linux软链接和Linux硬链接,包括了什么是Linux软链接和Linux硬链接的使用技巧和注意事项,需要的朋友参考一下 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为软链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 一、[硬链接]-->指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都
问题内容: 我有一个定义如下的指令- 我遇到的问题是从未调用Link函数。谢谢! PS编译逻辑的原因是该指令是递归的。 问题答案: 如果您的意思是未调用,则很清楚:编译函数已返回链接函数。定义为不再重要,将被忽略。
主要内容:编译(Compile),链接(Link),总结我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为 可执行程序(Executable Program)。在 Windows 下,可执行程序的后缀有 和 (其中 比较常见);在类 UNIX 系统(Linux、Mac OS 等)下,可执行程序没有特定的后缀,系统根据文件的头部信息来判断是否是可执行程序。 可执行程序的内部是一系列计算机指令和数据的集合,它们都是二进制形式的,CPU 可
本文向大家介绍在python中进行编译和链接的过程是什么?,包括了在python中进行编译和链接的过程是什么?的使用技巧和注意事项,需要的朋友参考一下 编译:python中的源代码保存为.py文件,然后将其编译为称为字节码的格式,然后将字节码转换为机器码。编译后,代码存储在.pyc文件中,并在更新源代码时重新生成。此过程称为编译。 链接:链接是最后一个阶段,其中所有功能都与它们的定义链接在一起,因
本文向大家介绍建立软链接(快捷方式),以及硬链接的命令。相关面试题,主要包含被问及建立软链接(快捷方式),以及硬链接的命令。时的应答技巧和注意事项,需要的朋友参考一下 答案: 软链接: ln -s slink source 硬链接: ln link source