2017-12-20 10 views
0

Ich bekomme keinen Fehler, aber io.on('connection', function(socket){ console.log('a user connected', socket.client.id); }); scheint nicht zu funktionieren, wenn ich meine Anwendung in Linode bereitgestellt.Socket IO funktioniert nicht bei der Bereitstellung

Aber in der Entwicklung funktioniert es gut?

server.js(Buchse io)

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

 
var port = 8002; 
 

 
io.on('connection', function (socket) { 
 
    console.log('a user connected', socket.client.id); // triggering in the development 
 
}); 
 

 
http.listen(port, function() { 
 
    console.log('Express server listening on port ' + port); 
 
    console.log('env = ' + app.get('env') + 
 
     '\n__dirname = ' + __dirname + 
 
     '\nprocess.cwd = ' + process.cwd()); 
 
});

Client html(Anmerkung: ich ändern, um die localhost auf meiner Web-app ip)

<script src="http://localhost:8002/socket.io/socket.io.js"></script> 

und meine Anwendung scheinen die socket.io Polling-xhr.js

enter image description here

Ich bin ein bisschen neu in diesem so wenden Sie sich bitte mit mir tragen werden.

Irgendwelche Vorschläge werden sehr geschätzt. Vielen Dank.

+0

In Ihrer Produktionsumgebung verwenden Sie den Port in der URL? Vielleicht erwartet socket.io auf Port 80. – Porlune

+0

@Porlune mein Server hört ** Port 8002 **, aber meine Anwendung läuft auf ** Port 82 ** – Priz

+0

Sie können es eingerichtet haben, so dass Sie ausdrücklich App verwendet den gleichen http-Server wie socket.io. Richten Sie es so ein, dann lassen Sie uns bitte wissen, ob es funktioniert. – Porlune

Antwort

1

Ich weiß nicht, ob dies Ihr Problem zu beheben, aber um socket.io auf dem gleichen Port einrichten, die Ihre Anwendung verwendet man es auf diese Weise konfigurieren:

const express = require('express'); 
const app = express(); 
const http = require('http'); 
const hostname = 'localhost'; 
const port = 80; 

// the express app is registered with the server 
const server = http.createServer(app); 

// setup socket.io and register it with the server 
const io = require('socket.io').listen(server); 

// tell the application to listen on the port specified 
server.listen(port, hostname, function (err) { 
    if (err) { 
    throw err; 
    } 
    console.log('server listening on: ', hostname, ':', port); 
}); 

Jetzt Buchse

.io läuft auf demselben Port wie Ihre Anwendung.