【问题标题】:stomp nodejs not sending header on connectstomp nodejs在连接时不发送标头
【发布时间】:2015-03-06 14:37:08
【问题描述】:

我有一个超级简单的 nodejs 应用程序,它使用 stomp 连接到使用 websockets 的服务器。

问题是应用程序没有发送我告诉它发送的标头。关于如何发送标头的文档和示例再清楚不过了,所以我不知道为什么我没有在wireshark 中看到我的。

var Stomp = require('stompjs');
var client = Stomp.overWS('ws://localhost:8080/web/wsendpoint');

var headers = {
      login: 'mylogin',
      passcode: 'mypasscode',
      // additional header
      'Auth-Token': 'token'
    };

client.connect(headers, connectCallback);

var connectCallback = function(frame) {
  alert('connected');
};

这可以正常连接,但标题似乎被忽略了。 有人知道这是为什么吗?

【问题讨论】:

    标签: javascript node.js websocket stomp


    【解决方案1】:

    好消息是,您确实将标头发送到服务器。坏消息是,使用 DOC-proper 的代码如下:

    client.connect(headers, connectCallback, errorCallback);
    

    我收到了:

    11 Mar 11:34:07 - server is connected to 127.0.0.1:8080
    11 Mar 11:34:07 - {
        command: 'CONNECT',
        header: {
           login: '[object Object]',
           passcode: 'undefined',
           'accept-version': '1.1,1.0',
           'heart-beat': '10000,10000' },
        body: '' }
    

    清楚地表明,stompjs 正在登录字段中发送headers 对象。无论如何,通过您的代码,我可以看到一个正确的框架:

    { command: 'CONNECT',
      header: 
      { login: 'mylogin',
        passcode: 'mypasscode',
        'accept-version': '1.1,1.0',
        'heart-beat': '10000,10000' },
      body: '' }
    

    所以可能 - 我猜 - 有一个好的代码,你在你的 wireshark 中看到错误的(部分)包。一些线索可能在here

    我用于测试的是here

    【讨论】:

    • 好吧,我已经在捕获的数据包中搜索了标头,但没有运气。搜索 url 是成功的,但是搜索“login”、“passcode”或“Auth-Token”没有结果。
    • 尝试在包内容中搜索CONNECT,因为这是客户端发送到服务器进行协商的命令。之后的标题是几行,仍然在包内容中,并且因为您似乎连接正确,所以这个包是肯定发送的,您必须能够找到它。
    猜你喜欢
    • 2014-09-04
    • 2022-10-22
    • 2015-01-26
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2018-11-04
    相关资源
    最近更新 更多