簡體   English   中英

Primus Websocket服務器無法從客戶端讀取消息

[英]Primus websocket server failed to read message from client

我使用Primus創建一個websocket服務器。 我使用wscat命令來測試該服務器。 它能夠連接到websocket服務器。 但是服務器無法從客戶端接收任何消息。 以下是Primus代碼:

http = require('http');
server = http.createServer();

Primus = require('primus');
primus = new Primus(server, {
  transformer: 'websockets',
  pathname: 'ws'
});

primus.on('connection', function connection(spark) {
  console.log("client has connected");
  spark.write("Herro Client, I am Server");
  spark.on('data', function(data) {
    console.log('PRINTED FROM SERVER:', data);
    spark.write('receive '+data)
  });

});

server.listen(5431);
console.log("Server has started listening");

下面是我測試的方式:

$ wscat -c  http://localhost:5431/ws
connected (press CTRL+C to quit)
< "Herro Client, I am Server"
> hello
> 

從以上命令可以看到,客戶端在請求連接時可以收到消息。 但是然后我向服務器發送了一個“ hello”,客戶端沒有收到服務器的反饋消息。 服務器也不會打印“ hello”消息。 我的代碼有什么問題嗎? 似乎spark.on('data', function(data)方法沒有任何作用。

您未通過向服務器發送有效的JSON數據而引發了火花錯誤。

消息:“無法解碼傳入數據:JSON中位置0的意外令牌a”

嘗試這個:

http = require('http');
server = http.createServer();

Primus = require('primus');
primus = new Primus(server, {
  transformer: 'websockets',
  pathname: 'ws'
});


primus.on('initialised', function() {
    console.log('Primus Initialized.');
});

primus.on('connection', function connection(spark) {
  console.log("client has connected");

  spark.write("Herro Client, I am Server");

  spark.on('data', function(data) {
    console.log('PRINTED FROM SERVER:', data);
    spark.write('received');
  });

  spark.on('heartbeat', function() {
    console.log('hearbeat...');
  });


  //happens after primus.disconnection
  spark.on('end', function() {
    console.log('spark end');
  });

  spark.on('error', function (v) {
    console.log('spark error', v);
  });

});

//happens before spark.end
primus.on('disconnection', function (spark) {
    console.log('primus disconnection');
});

primus.on('error', function error(err) {
    console.log('primus error', err.stack);
});

server.listen(5431);

它對我有用,如下所示:

$ wscat -c 127.0.0.1:5431/ws/websocket
connected (press CTRL+C to quit)
< "Herro Client, I am Server"
> {"a":"b"}
< "received"
> {"valid":"json"}
< "received"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM