html5 - node - socket io unicast




Socket.IO-requireが定義されていません (6)

私はsocket.ioを動作させようとしていますが、今はChromeでエラーが出ます:

Uncaught ReferenceError:requireが定義されていません

client.php:9Uncaught ReferenceError:ioが定義されていません

socket.io.jsファイルをインクルードする方法を変更しました。なぜなら、dosntは他の場所に存在するからです。

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

試してみたら

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

私は次のようになります: リソースの読み込みに失敗しました:サーバは404のステータス(Not Found)で応答しました。

これはUbuntuの最新版

私はhttp://socket.io/のサーバーコードを使って、client.phpのような同じフォルダで動作させています。それはserver.jsという名前で動作し、変更されたポートだけです。



あなたのサーバー上でPHPに沿ってnode.jsを実行していますか?

サーバークライアントの 2つの "socket.io"パッケージがあります 。 ブラウザにサーバーの 1つ( /node_modules/socket.io/lib/socket.io.js )をロードしようとしています 。 必要なスクリプトはsocket.io-clientと呼ばれ、 https://raw.github.com/LearnBoost/socket.io-client/master/socket.io-client.js //raw.github.com/LearnBoost/socket.io-client/master/socket.io-client.jsで見つけることができhttps://raw.github.com/LearnBoost/socket.io-client/master/socket.io-client.js

何が起こるかは、 あなたがポート80でノードを走らせているとき 、socket.ioが自動的に/socket.io/socket.io.js (クライアント1)ファイルをポート80から提供することです 。 あなたの場合、Apacheは既にポート80にあるので、手動でファイルを提供する必要があります。


スクリプトがあなたのウェブサーバから来ていない場合、これはうまくいかないでしょう:

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

明示的にホストとポートを指定する必要があります:

<script src="http://localhost:<port>/socket.io/socket.io.js"></script>

他の人が指摘しているように、ioがサーバー側で実行されると、 "socket.io.js"の "automagical"サービスが提供され、libディレクトリ内の他のjsファイルに分岐します。

私が追加したいのは、これはIntientではなく、いいえ、通常のWebサーバーにこのファイルを提供させることはできません - エラーはちょっと奇妙になり、一見矛盾するようになります。 これは普通のjsファイルではないので、そこにあるすべてのチュートリアルを強調したいと思います。

とにかく、nginxの背後で実行している場合、例えば、私の場合はnode-port 3000に割り当てられた同じポートにport-settingsを設定します。 私はこのようにクライアントでそのポートを使用しました:

  <script src="http://localhost:3000/socket.io/socket.io.js"></script>

...また、サーバーコードでポート3000を使用しています。 - さまざまな方法やバージョンがありますが、例のためにserver-js-codeをコーディングすることはできますが、ほとんどの人は '別の方法'を使用しています。


私はthejhが言うことを試して、それは動作します。 ホストとポートを指定する必要がありました。 ポート81でリッスンしているノード・アプリケーションでは、クライアントJavaScriptでポート81を指定する必要がありました。 Nevermind /socket.io/socket.io.jsは仮想ホストに存在せず、ノードは実行時にそれを補う。


私は同じ問題を抱えていて、@ thejhの解決策が働いたことを確認します。 しかし、私は彼の推薦を読むときに "何"がサーバーであるかについて確信が持てませんでした。 私はポート80でMAMPを実行しています。そして、以下のコードは、ポート8001で動作する "node.jsサーバー"になります。

node.jsサーバーを起動すると(以下のコードを実行した)、 http://localhost:4001/socket.io/socket.io.jsするとjavascriptファイルが返されます。

/* Node.js server */

var sys  = require('sys');
var io   = require('socket.io');
var http = require('http')
server = http.createServer(function(req, res) { 
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('http server started');
  res.end(); 
});
server.listen(4001);


// socket.io 
var socket = io.listen(server); 
socket.on('connection', function(client) {

  client.on('message', function(message) {
    // We're in!
    console.log('received client message '+ message);
  }); 
  client.on('disconnect', function() {});
  socket.send('welcome to the local node.js server!');
});

Drupal内では、 drupal_add_js('http://localhost:4001/socket.io/socket.io.js', array('type' => 'external', 'group' => JS_LIBRARY)); hook_init内でそのトリックを行います。





socket.io