【发布时间】:2021-09-07 13:52:51
【问题描述】:
这是我的代码,它只适用于我所在的标签。我收到回复,似乎一切正常,但我仍然不完全了解该技术的操作,这就是我去找你的原因。
以“responseHanlder”结尾
connect() {
// backend ws endpoint
const wsURL = "ws://localhost:6565/rsocket";
// rsocket client
const client = new RSocketClient({
serializers: {
data: JsonSerializer,
metadata: IdentitySerializer,
},
setup: {
keepAlive: 60000,
lifetime: 180000,
dataMimeType: "application/json",
metadataMimeType: "message/x.rsocket.routing.v0",
},
transport: new RSocketWebSocketClient({
url: wsURL,
}),
});
client.connect()
.then((sock) => {
document.getElementById("connect")
.addEventListener("click", (event) => {
numberRequester(sock);
});
}, errorHanlder);
/*Aquí comienza el código del primer socket para insertar un producto
antes de enviar la notificación primero realiza una acción*/
const numberRequester = (socket) => {
socket
.requestResponse({
data: {
id: null,
subscriber: retrieveData.id,
titulo: "Se insertó un nuevo producto",
descripcion:
"Aquí se agrega una descripcion breve de lo que se acaba de hacer (opcional)",
fecha_inicio: today,
fecha_final: final,
leido: false,
},
metadata:
String.fromCharCode("insert.notification".length) +
"insert.notification",
})
.subscribe({
onComplete: responseHanlder,
onError: errorHanlder,
onNext: responseHanlder,
onSubscribe: (subscription) => {
//subscription.request(100); // set it to some max value
},
});
}
// error handler
const errorHanlder = (e) => console.log(e);
// response handler
const responseHanlder = (payload) => {
this.sendNotification(payload.data);
};
}
发送数据后,我的 rsocket 接收信息,然后我收到包含所需数据的响应。目前,它仅在运行它的选项卡中有效,但我需要在其他选项卡中反映该信息,因为它是通知的原型。
【问题讨论】:
-
“其他标签”是指浏览器的标签?
-
不同的标签页......好吧,他们宁愿是不同会话或浏览器中的不同用户,我不知道我是否解释自己。感谢您的回答。
-
我想我明白了,你的意思是不同的客户。
-
是的,谢谢,因为我有一个响应,它在执行 requestResponse 的客户端中有效,但在其他客户端中并没有反映给我。不知道有没有办法解决这个问题,我觉得应该可以,因为这就像使用套接字一样,对吧?
-
出于安全原因,我相信浏览器选项卡会分开。我怀疑实现这一点的最佳方法是服务器向同一用户的所有连接广播。
标签: vue.js reactive-programming spring-webflux rsocket