簡體   English   中英

使用Socket.io的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM