0

私はNodejsの初心者です。Primus を使用してクライアントとサーバーを通信するプログラムを作成しています。しかし、サーバーからクライアントにメッセージを送信できません。これが私のコードです。クライアント:

<html>
<head>
<title> hung </title>
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
 <script type="text/javascript" src="jquery.min.js"></script>
 <script type="text/javascript" src="primus/primus.js"></script>
 <script type="text/javascript">
    $(document).ready(function() {
        $("input#button").click(function(){
            var content = $("#content").val();

            $.ajax({
            type:"POST",
            url:"http://node-xxx.rhcloud.com/api/sendmessage",
            data:{"data": content},
            success: function(result){
                alert(result);
            }
        });
        }); 
    });
 </script>
</head>
<body>
    <textarea name="content" id="content" ></textarea>
    <input type="button" id="button" value="OK">
<div id="message"></div>
<script>
    var primus;
    if (primus) primus.end();
    primus = new Primus();
    primus.on('open', function open() {
        log('open', 'Open', 'The connection has been established.');
        document.getElementById('connect').innerHTML = 'connected';
      });
    primus.on('data', function incoming(data) {
        alert(data);
      });
    primus.on('end', function end() {
        log('end', 'End', 'The connection has ended.');
      });
      primus.on('close', function end() {
        log('close', 'close', 'We\'ve lost the connection to the server.');
      });
  </script>
</body>
</html>

サーバ

var http = require("http");
var Primus = require("primus");
var server;
var primus;
var options = {
    transformer: "engine.io"
};

.............
self.app.post('/api/sendmessage', function(req, res){
        var msg = req.body.data;
        res.setHeader('Content-Type', 'text/plain');
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        var count = 0;
        var interval = setInterval(function(mess) {
            if (count < 4) {
                var mess = msg + count;
                count ++;
                console.log(mess);
                primus.on("connection", function(spark) {
                    spark.on("data", function(data) {
                    spark.write(mess);
                    });
                });
            } else {
                console.log("Done");
                clearInterval(interval);
            }           
        }, 6000, msg); 
    });
............
self.initializeServer = function() {
        self.createRoutes();
        self.app = express();
        server = http.createServer(self.app)
        primus = new Primus(server, options)
.............

Nodejs と ExpressJS を使用してサーバーを作成します。誰でもそれを機能させる方法を教えてもらえますか? ありがとう

4

1 に答える 1

1

ルートからもっとprimus.on('connection')外れる必要があります。self.app.post今では、受信するすべての接続に対して接続リスナーを追加しています。あなたが探しているのは、Primus のブロードキャスト機能です。そのための正しい API については、https://github.com/primus/primus#broadcastingを参照してください。

于 2015-08-26T11:25:29.763 に答える