簡體   English   中英

如何連接客戶端-Primus中的服務器

[英]How to connect client - server in Primus

我是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創建服務器。 任何人都可以打電話給我,讓它如何工作? 謝謝

您需要在self.app.post路由之外增加primus.on('connection') 現在,您正在為收到的每個連接添加連接偵聽器。 您正在尋找的是Primus的廣播功能。 有關正確的API,請參見https://github.com/primus/primus#broadcasting

暫無
暫無

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

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