0

私はここで頭が痛いので、どんな助けでも大歓迎です。

クライアント (Web ページ) から Node.JS サーバーに socket.io 経由でメッセージを送信または送信しようとしています。これは、localhost として実行されている Windows 7 上にあります。

正確な問題は次のとおりです。

  • サーバーからクライアントにメッセージを送信できます。
  • クライアントからサーバーへのメッセージの送信が機能しません:(

サーバーコード:

// create http server
var app = require('http').createServer(httpHandler);
// socket.io
var io = require('socket.io').listen(app);

var port = 8080;

app.listen(port);
console.log('Server running at http://127.0.0.1:' + port);

// socket connection handler
io.sockets.on('connection', function (client) {
    // this works great:    
    client.emit('text_msg', {msg: 'Welcome you are now connected.'});

    // plain message - this never works :(
    io.sockets.on('message', function(data){
        console.log("*************************** message : " + data.txt);
    });
});

クライアントコードの一部を次に示します。

<script src="/socket.io/socket.io.js"></script>

...snip...

var socket = io.connect( 'http://localhost' );
socket.emit('message', {txt:"test"});

socket.on('text_msg', function (data) {
    alert( data.msg );
});

次のブラウザを試しました。

  • クロム 18 (Windows 7)
  • Firefox 11 (Windows 7)
  • インターネット エクスプローラー 9 (Windows 7)

NodeJS の出力から、Chrome と Firefox の両方が Websockets を使用し、IE9 が「htmlfile」を使用していることがわかります。

NodeJS はバージョン 0.6.15 です

npm リストは次のようになります。

├── node-static@0.5.9
└─┬ socket.io@0.9.6
  ├── policyfile@0.0.4
  ├── redis@0.6.7
  └─┬ socket.io-client@0.9.6
    ├─┬ active-x-obfuscator@0.0.1
    │ └── zeparser@0.0.5
    ├── uglify-js@1.2.5
    ├─┬ ws@0.4.13
    │ ├── commander@0.5.2
    │ └── options@0.0.3
    └── xmlhttprequest@1.2.2

ご協力ありがとうございます。

4

1 に答える 1

3

変化する:

io.sockets.on('message', function(data){
console.log("*************************** message : " + data.txt);
});

に:

client.on('message', function(data){
console.log("*************************** message : " + data.txt);
});

電話すると

io.sockets.on('connection', function (client)

クライアント側が発行しているソケットの現在の名前空間である「クライアント」を定義しています。

于 2012-04-22T00:28:59.260 に答える