簡體   English   中英

運行socket.io和express-nodejs安裝時出錯

[英]Error running socket.io and express-nodejs setup

我正在研究使用spawn和socket.io方法執行python腳本的nodejs。 我正在控制台上獲得輸出。 但我無法在瀏覽器上顯示它。 顯示錯誤。我在下面粘貼了錯誤。 誰能幫我解決這個問題。 我從這個stackoverflow中得到了這個例子,在這里我粘貼我的代碼: sample.py

import random, time
for x in range(10):
print(str(random.randint(23,28))+" C")
time.sleep(random.uniform(0.4,5))

index.js

var express = require("express");
var path = require('path');
var bodyParser = require('body-parser');
var fs = require('fs');
var spawn = require('child_process').spawn;
var http = require('http').Server(app);
var io = require('socket.io')(http); 

var app = express();
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
app.post('/showtemp',function(req,res){
   var pathtoScript = spawn('python', ["../External_scripts/sample.py"]);
    pathtoScript.stdout.on('data', function (output) { 
    var val = String(output);
    console.log(val);
    io.sockets.emit('response', { data: val});
});
})
var server = app.listen(8082,'0.0.0.0', function () {

  var port = server.address().port

console.log("App is listening at %s", port)

});

index.html頁面

<!doctype html>
<html>
<head>
    <title>Live temperature</title>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<div id="liveTemp">Loading...</div>

<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script>
        var socket = io();
        socket.on('response',function(msg){
            console.log("msg");
            $('#liveTemp').html(msg.data);
        })
});
</script>

</body>
</html>

我收到此錯誤

GET http://localhost:8082/socket.io/?EIO=3&transport=polling&t=LQSVrTN 404 (Not Found)
GET http://localhost:8082/socket.io/?EIO=3&transport=polling&t=LQSVrTN 404 (Not Found)

您尚未在任何地方啟動Web服務器,也未將socket.io連接到該服務器。 有幾種不同的方法可以執行此操作,但這是一種有效的方法:

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

server.listen(80);

注意:您必須在某處看到server.listen() (或等效文件)。 並且,您需要將服務器傳遞給socket.io,以便它可以掛接到它。

您也可以在不需要直接加載http模塊的情況下執行此操作:

var express = require('express');
var app = express();
var server = app.listen(80);
var io = require('socket.io')(server);

這里有幾個不同選項的socket.io文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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