1

今日、私はhttp://gonzalo123.com/2011/05/23/real-time-notifications-part-ii-now-with-node-js-and-socket-io/で Gonzalo Ayuso によるチュートリアルに従いますが、それは可能ですメッセージを送信しない ここに私のserver.jsがあります

var http = require('http');
var io = require('socket.io');

server = http.createServer(function(req, res){
});
server.listen(8000);

//socket.io
var socket = io.listen(server);
socket.set('transports', ['websocket']);

console.log("Start");
socket.on('connection', function(client){
      client.on('message', function(msg){
          console.log(msg);
          socket.broadcast(msg);
      })
    });

そしてclient.html

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Comet Test</title>
    </head>
    <body>
        <p><a id='customAlert' href="#" onclick='socket.send("customAlert")'>publish customAlert</a></p>
        <p><a id='customAlert2' href="#" onclick='socket.send("customAlert2")'>publish customAlert2</a></p>
        <script src="http://localhost:8000/socket.io/socket.io.js" type="text/javascript"></script>
        <script type="text/javascript">
// Start the socket
var socket = io.connect('http://localhost:8000');

socket.on('message', function(msg){
    console.log(msg);
});
        </script>
    </body>
</html>

サーバーで実行するために少し編集しました。しかし、クライアントはサーバーにメッセージを送信しません。誰でも私を助けることができますか?私の悪い英語でごめんなさい。

クライアントがサーバーに接続できないことがわかりましたが、その理由はわかりませんか?

私のコンピューターは、Apacheサーバーでxamppを実行しています。多分それは問題ですか?

更新: トランスポートを xhr-polling に設定したところ、接続が成功しました。Websocketを受け入れないのはなぜですか?

4

2 に答える 2

0

まず、socket.ioに関するチュートリアルを注意深く読んで、イベントを呼び出す必要があります。イベント名を発行する必要があります。

socket.emit('my other event', { my: 'data' });

つまり、アンカーのonclickで、socket.emit ...を呼び出すか、次のような関数を呼び出す必要があります。

function call_my_event(name){

    socket.emit(name,{my : 'data'});
} 
于 2013-02-04T09:05:43.010 に答える
0

私は自分の問題を発見しました。それは、ファイアウォールやプロキシ、または私のコンピューターのブロック websocket プロトコルの何かに関するものです。そのコードを別のコンピューターでテストしたところ、正常に動作しました。したがって、システムを再インストールする必要があり、websocket が利用可能です:D

于 2013-02-05T02:23:37.613 に答える