[英]Issues with using Socket.io
我試圖第一次使用socket.io,我將它與MEAN Stack一起使用。 我通過以下方式進行設置。
Server.js
var express = require('express');
var app = express(); // create our app w/ express
var server = require('http').createServer(app);
var io = require('socket.io')(server);
app.listen(port);
io.on('connection', function(socket) {
socket.emit('message', {
'message': 'hello world'
});
});
HTML文件
<script>
var socket = io.connect();
socket.on('message', function(data) {
console.log(data.message);
});
</script>
我找不到socket.io.js
文件,所以我在CDN中搜索了該腳本。 我使用了以下內容。
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.6/socket.io.js"></script>
我嘗試從他們的網站下載socket.io.js,但該網站似乎已關閉。 我可以訪問它,但收到502 BAD GATEWAY錯誤( http://socket.io )
如上所示,在完成所有設置后加載HTML頁面時,在控制台中出現以下錯誤。
任何幫助將不勝感激!
更新:
當您按以下方式檢索文件時, socket.io
服務器將執行一些魔術操作以提供該文件:
<script src="/socket.io/socket.io.js"></script>
編輯 :啊,我看到了問題:您的Express設置不正確。
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
app.listen(port);
您正在將socket.io
附加到由http.createServer
創建的服務器上,但是實際上是使用app.listen()
創建了一個新服務器,沒有連接socket.io
服務器。
您可以使設置更簡單:
var express = require('express');
var app = express();
var server = app.listen(port);
var io = require('socket.io')(server);
無需使用http
。
截至目前,socket.io網站仍處於關閉狀態。 如果服務器中沒有該文件,則使用/socket.io/
將/socket.io/
因為它指向服務器上的路由,並且該路由似乎在您的應用中不存在。 使用此配置,您需要從服務器靜態提供.js文件-但我在服務器代碼上看不到該文件。
當您嘗試CDN時,請確保正在加載文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.