我在我的javascript客户端中使用stomp.js而不是SockJS.我正在使用websocket连接
stompClient.connect({}, function (frame) {
Run Code Online (Sandbox Code Playgroud)
stomp over sockJS连接有2个http请求:
客户端发送所有cookie.我也想发送自定义标头(例如XSRF标头),但没有找到办法做到这一点.将不胜感激任何帮助.
我在我的 Angular 项目中使用 stomp js,还在 java spring 中使用 WebSocket 作为后端。
这里是这样的场景:如果客户端电脑中的互联网连接丢失,那么如何通知客户端它们与 WebSocket 连接已断开,以及如何在客户端再次获得互联网连接时自动重新连接?
我正在使用@stomp/ng2-stompjs“^7.2.0”。提前致谢
我正在尝试按照本 Spring
教程使用websockets
.我webpack
用来捆绑我的代码并将babel
其转换ES6
.我试图sockjs
用一个正常的import
声明来引入.
import SockJS from 'sockjs'
Run Code Online (Sandbox Code Playgroud)
但是在webpack
运行时,我会丢失模块错误,
ERROR in ./~/stompjs/lib/stomp-node.js
Module not found: Error: Cannot resolve module 'net' in /Users/name/Developer/cubs-stack-4/cubs-webapp/node_modules/stompjs/lib
@ ./~/stompjs/lib/stomp-node.js 14:8-22
ERROR in ./~/websocket/package.json
Module parse failed: /Users/name/Developer/cubs-stack-4/cubs-webapp/node_modules/websocket/package.json Line 2: Unexpected token :
You may need an appropriate loader to handle this file type.
| {
| "_args": [
| [
| "websocket@latest",
@ ./~/websocket/lib/version.js 1:17-43
Run Code Online (Sandbox Code Playgroud)
主要是因为它有望继续运行Node
.
我有两个问题.
首先,如何stompjs …
我们如何从 Nodejs 环境连接到 Tibco。
有没有人尝试使用任何 nodejs 包(如 stompjs 或任何 javascript 组件)连接到 Tibco EMS 队列。
我正在客户端用StompJS编写一个spring websocket应用程序.
在客户端,我打算发送一个对象列表,并在服务器端映射到java对象时,它将自身转换为LinkedHashMap
我的客户端代码是
function stomball() {
stompClient.send("/brkr/call", {}, JSON.stringify(listIds));
}
Run Code Online (Sandbox Code Playgroud)
Listids看起来像
[{
"path": "/a/b/c.txt",
"id": 12
}, {
"path": "/a/b/c/d.txt",
"id": 13
}]
Run Code Online (Sandbox Code Playgroud)
List Id对象看起来像
public class ListId {
private String path;
private Long id;
//getters and setters...
}
Run Code Online (Sandbox Code Playgroud)
控制器看起来像这样
@MessageMapping("/call" )
@SendTo("/topic/showResult")
public RetObj process(List<ListId> listIds) {
if (!listIds.isEmpty()) {
for(ListId listId: listIds) {
}
}
Run Code Online (Sandbox Code Playgroud)
所以我得到一个java.lang.ClassCastException:java.util.LinkedHashMap无法强制转换为com.blah.ListId
然而,当我使用RestMapping使用普通的Spring控制器时,它工作正常,是否有任何弹簧MessageMapping注释将对象映射到java的方式与传统方式不同我不知道为什么不转换为ListID
在使用打字稿的ng2应用程序上我使用stompjs,它没有汇总它工作正常.
我正在导入它:
import {Stomp} from "stompjs"
运行汇总后,我得到"EXCEPTION:Stomp is not defined"
我的汇总配置是:
import rollup from 'rollup';
import nodeResolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
export default {
entry: 'aot/app/src/boot-aot.js',
dest: 'dist/bundle.es2015.js', // output a single application bundle
sourceMap: true,
useStrict: false,
format: 'iife',
treeshake: true,
plugins: [
nodeResolve({
module: true,
jsnext: true,
main: true,
browser: true,
extensions: ['.js']
}),
commonjs({
include: [
'node_modules/rxjs/**',
'node_modules/stompjs/**'
],
namedExports: {
'node_modules/stompjs/lib/stomp.min.js': [ 'Stomp' ]
}
})
]
}
Run Code Online (Sandbox Code Playgroud)
stompjs的TypeScript类型定义文件
declare module "stompjs" {
export …
Run Code Online (Sandbox Code Playgroud) 我希望能够检测到用户何时失去了与服务器的连接(关闭的选项卡、失去了互联网连接等)我在我的客户端上通过 Sockjs 使用 stompjs,在我的服务器上使用 spring mvc websockets。
我如何检测客户端何时失去连接。这是我如何配置我的 websocket 消息 brocket:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Autowired
private TaskScheduler scheduler;
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic").setHeartbeatValue(new long[]{10000, 10000}).setTaskScheduler(scheduler);
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/web").setAllowedOrigins("*").withSockJS();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器类,它实际上处理传入的套接字消息:
@RestController
@CrossOrigin
public class WebMessagingController {
@MessageMapping("/chat/message")
public void newUserMessage(String json) throws IOException {
messagesProcessor.processUserMessage(json);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道如果我使用从TextWebSocketHandler扩展的类,我将有 bean 能够覆盖在客户端连接和断开连接时调用的方法,但我认为这不适用于sock-js 客户端。谢谢你。
stompjs ×7
stomp ×3
java ×2
sockjs ×2
angular ×1
angular8 ×1
javascript ×1
node.js ×1
rollupjs ×1
spring ×1
spring-mvc ×1
tibco-ems ×1
typescript ×1
websocket ×1