2014-09-19 41 views
0

我很新的NodeJS並試圖讓Socket.IO運行一個Express應用程序。我試圖儘可能靠近文檔和教程,但最終,socket.io.js無法在客戶端找到。Socket.io沒有正確連接到http服務器在快速應用

服務器正在啓動如下:

var app = require('../app'); 
app.set('port', process.env.PORT || 3000); 

var server = app.listen(app.get('port'), function() { debug('...') }); 

路由/服務網頁:

var express = require('express'); 
var router = express.Router(); 

router.get('/', function (req, res) { 
    res.render('index', { title: 'Express' }); 
}); 

包括socket.io:

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

而在HTML文件中,客戶:

<script src="/socket.io/socket.io.js" type="text/javascript"> 

但是當加載頁面時,這個JS文件永遠找不到。我懷疑包括socket.io通過以前創建的http服務器是某種錯誤...或者我錯過了別的東西?

更新

我剛剛發現服務器已啓動(第一個片段)被執行之前,包括socket.io的文檔片斷。它們位於不同的文件中,並且服務器啓動的一個(名爲www.js)被配置爲package.json中的「start」腳本,另一個(websockets.js)被該參數間接需要。

如果我把

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

www.js末,一切都運行得很好。但有沒有辦法從websockets.js,這是之前加載,例如由服務器啓動回調函數?

+0

查看其他在線教程相同。 – Ravi 2014-09-19 10:47:58

回答

0

嘗試指定的完整路徑,這樣

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

而且從客戶端連接到服務器:

var socket = io.connect('http://localhost:8000/'); 

還檢查socket.io模塊在node_modules目錄中可用。

+0

是的,模塊在那裏,硬編碼路徑也不起作用。但我有一些新的發現,現在會更新這個問題。 – 2014-09-19 10:38:29