无法让nodejs socket.io在我的ubuntu虚拟机上运行

时间:2016-12-23 17:06:40

标签: javascript node.js linux socket.io

我正在尝试让我的nodejs socket.io应用程序在我的网站中工作而没有任何结果。在我自己的计算机上,它与xampp工作正常。

已安装

npm install --save express@4.10.2npm 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一起运行,我总是会遇到同样的错误。

enter image description here

虚拟机来自digitalocean。

所有端口都被阻止,但是分别为22,80和443.

我允许端口8080使用sudo ufw allow 8080sudo ufw allow out 8080,但它不起作用。

ufw被禁用sudo ufw disable但无效。

我不知道下一步该尝试什么。我该如何解决这个问题?

2 个答案:

答案 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;
}