0

私は、Node と Express を使用して socket.io を組み込んだ最初のアプリに一日中費やしてきましたがsocket.io.js、クライアント側で自分のファイルを見つけることができないようです。この問題に関する多くの SO の質問や他のフォーラムを読みましたが、推奨される解決策のいずれでも機能しないようです。

Express と socket.io を正常にインストールし、サーバー側ですべて正常に動作しています (現在、Twitter Stream Api で動作するようになりました)。emitクライアント側からのデータを使用したいので、ソケット ファイルを含める必要があります。

ビューエンジンとして HoganJS をセットアップしました。

これが私のapp.jsファイルからの抜粋です:

app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hjs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(require('less-middleware')({ src: path.join(__dirname, 'public') }));
app.use(express.static(path.join(__dirname, 'public')));

Twitterとソケットコードがある場所に別のファイルindex.jsがあり、ここに私のrequire行があります:

var twitter = require('ntwitter');
var io = require('socket.io').listen(3001, {log: false});
// all my twitter setup/functions etc here
io.sockets.emit('tweets' ,data);

クライアント側では、次のような考えられるすべてのパスを試しました。

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

そして、それを適切にリンクする方法を見つけようとしている他の多くのパス。これが明らかであるか、他の場所で回答されている場合は申し訳ありませんが、見つかりませんでした。

Chrome 開発ツールによると、私が思いつくことができるパスはすべて 404 になります。

本当にありがとう!

4

2 に答える 2

1

socket.ioポート 3001 で実行しているため:

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

ただしsocket.io、同じポートで一緒に実行して Express を実行することもできます。

var express = require('express');
var app     = express();
var server  = app.listen(3000);
var io      = require('socket.io').listen(server);
于 2013-10-26T10:01:41.490 に答える
0

ファイルがあるかどうかを確認しますsocket.io.js

下にチェックnode_modules -> socket.io -> socket.io.js

はいの場合は、このパスを試してください

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

于 2013-10-26T11:43:17.810 に答える