运行套接字错误.IO和express-nodejs设置
Error running socket.io and express-nodejs setup
我在nodejs上工作,使用spawn和socket执行python脚本。io方法。我在控制台上得到输出。但我无法在浏览器上显示它。它显示了错误。我把错误贴在了下面。有人能帮我解决这个问题吗?我从这个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 page
<!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服务器或连接套接字。我明白了。有几种不同的方法可以做到这一点,但这里有一种有效的方法:
var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(80);
注意:您必须在某处看到server.listen()
(或等效)。并且,需要将服务器传递给套接字。
你也可以这样做,你不直接需要自己加载http
模块:
var express = require('express');
var app = express();
var server = app.listen(80);
var io = require('socket.io')(server);
插座。
相关文章:
- 在Nodejs中Express输入DEBUG=app时权限被拒绝/bin
- Nodejs和express路由,如何处理客户端的承诺
- nodejs/express包含本地js文件
- 将路由处理程序委托给NodeJS+Express中的其他模块
- NodeJS Express中的分页方法
- AngularJS路由服务器端支持(NodeJS+express)
- 无法读取未定义的属性 - NodeJS,Express,Mongoose
- 如何在不使用 express 的情况下在 nodejs 中创建会话
- 有没有办法在express nodejs中将参数传递给路由器
- 刷新Express NodeJS API的内容
- 如何解析Express/ NodeJs中缺少内容类型的HTTP请求,通过假设一个默认的内容类型
- Express NodeJS中的partials错误
- 在Express NodeJS服务器上接收和读取JsonString
- 如何使用Express Nodejs在响应中返回Json列表的子集
- 如何使用express (NodeJS)将大量文件从服务器发送到客户端
- 无法打印套接字发出的值.IO和express-nodejs
- 运行套接字错误.IO和express-nodejs设置
- 在express nodejs应用中无需刷新页面即可更新待办事项列表
- 前端是Meteor,后端是Express (NodeJS)
- 更好的回调Javascript代码在Express/NodeJs