2016-07-20 17 views
1

socket.ioを使用してWebページを提供するノードサーバーを作成しています。しかし、私はページをロードするとき、コンソールが続く、エラー当然、あるsocket.ioを取得しようとするとエラー404が発生する

(index):6 GET http://localhost:3000/socket.io/socket.io.js

を示しています

(index):51 Uncaught ReferenceError: io is not defined

私はネットワークタブのページでロードされたファイルを調べたときに、それは示していsocket.ioのエラー404しかし、驚くべきことに、私がsocket.ioを使って他のプログラムを立ち上げたとき、すべて正常に動作しました。唯一の相違点は、私はエクスプレスを使用することです。ここで

は私のコードは次のとおりです。

app.js:

var express = require('express'); 
var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 

app.use(express.static("./app")); 

app.get("/", function(req, res, next) { 
    res.sendFile(__dirname + "/index.html") 
}); 

app.listen(3000); 
console.log("Server started in http://localhost:" + 3000); 


io.on('connection', function(socket){ 
    socket.emit('news', {hello :'world'}); 
    socket.on('my other event', function(data){ 
    console.log(data); 
    }); 
}); 

のindex.html:あなたの助けを

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <script src="/socket.io/socket.io.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
</head> 
<body> 

[Some unrelated text] 

<script> 
    var socket = io.connect('http://localhost'); 
    socket.on('news', function(data){ 
    console.log(data); 
    socket.emit('my other event', {my: 'data'}); 
    }); 

</script> 

</body> 
</html> 

ありがとう!

答えて

2

変更

app.listen(3000); 

server.listen(3000); 

にあなたのsocket.ioは、httpサーバ serverに取り付けられています。 参照先: var io = require('socket.io')(server); エクスプレスサーバー appではありません。

明らかに、socket.ioは何も処理できませんでした。期待したことのないサーバーでした。

テスト済!この回答は私の地域の環境で成功裏に複製されました!!

+1

ありがとうございました!あなたの解決策をテストした後、私はトップの答えを使って修正した同じエラーをこの他のスレッドで得ました。 http://stackoverflow.com/questions/24526166/socketio-err-connection-refused –

+0

はい、以前は他のスレッドから修正をテストしたかっただけです。ご協力いただきありがとうございます ! –

+0

乾杯。 Gr8それworkd! – Iceman

関連する問題