我正在尝试让我的nodejs socket.io应用程序在我的网站中工作而没有任何结果。在我自己的计算机上,它与xampp工作正常。
已安装 npm install --save express@4.10.2
和npm install --save socket.io
这是我的代码:与nodejs一起运行的server.js
var socket = require( 'socket.io' );
var express = require( 'express' );
var http = require( 'http' );
var app = express();
var server = http.createServer( app );
var port = 8080;
var io = socket.listen( server );
io.sockets.on( 'connection', function( client ) {
console.log("New user connected");
client.on('message', function( data ) {
console.log( 'Message: ' + data);
io.sockets.emit( 'message', data);
});
});
server.listen(port, function(){
console.log("Listening on port: " + port);
});
这是我的index.php
<script src="script/node_modules/socket.io-client/dist/socket.io.js"></script>
<script>
var socket = io.connect( 'http://localhost:8080' );
</script>
我这样做的方式与this不同,因为我正在使用apache。
我收到此错误,无论server.js
是否与nodejs一起运行,我总是会遇到同样的错误。
虚拟机来自digitalocean。
所有端口都被阻止,但是分别为22,80和443.
我允许端口8080使用sudo ufw allow 8080
和sudo ufw allow out 8080
,但它不起作用。
ufw被禁用sudo ufw disable
但无效。
我不知道下一步该尝试什么。我该如何解决这个问题?
答案 0 :(得分:1)
试试这个。我认为是节点服务器未命中配置。你检查你的节点日志吗?
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var config = {port : 8080};
http.listen(config.port, function() {
console.log('listening on port',config.port)
});
io.on('connection', function(socket) {
console.log("New user connected");
socket.on('message', function( data ) {
console.log( 'Message: ' + data);
socket.emit( 'message', data);
});
});
答案 1 :(得分:0)
对于客户端试试这个:
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script type="text/javascript">
var socket = io.connect( 'http://localhost:8080' );
</script>
对于服务器端,请尝试:
app.set('port', 8080);
var server = http.createServer( app );
var io = require('socket.io').listen(server);
或者看看这个:可能重复 Node js Digitalocean Socket io connection refused
location ~* \.io {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
And don't forget the upstream for your node js app
upstream app_yourdomain {
server 127.0.0.1:3000;
keepalive 8;
}