Bonjour,

Premièrement je ne suis pas un expert de node.js ni de l'environnement linux. J'ai développé un petit serveur me permettant de gérer un chat Android via nodejs, cette application javascript marche très bien sur mon environnement windows, cependant voulant partager ce projet avec d'autres personnes, j'ai donc installé debian sur un serveur dédié ovh (kimsufi), ainsi que nodejs.

Voici mon code javascript :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
 
var express = require("express");
var sio = require("socket.io");
var http = require('http');
var dnode = require('dnode');
var mysql = require('mysql');
var dateFormat = require('dateformat');
 
var webApp = express(),
    server = http.createServer(webApp),
    io = sio.listen(server),
    ent = require('ent'), // Permet de bloquer les caractères HTML (sécurité équivalente à htmlentities en PHP)
    fs = require('fs');
 
function emitAction(action,latitude,longitude,made_at) {	
	io.sockets.emit('newAction', {action: action,latitude: latitude, longitude: longitude, made_at: made_at});	
}
	server.listen(3000);
 
// Chargement de la page index.html
webApp.get('/', function (req, res) {
  res.sendfile(__dirname + '/ego/ego-product-website/index.html');
});
 
 
var dServer = dnode({
	newAction:  function (action,latitude,longitude,made_at) { emitAction(action,latitude,longitude,made_at) }
 
});
dServer.listen(7070);
 
var mysqlConnection = mysql.createConnection({
	  host     : '127.0.0.1',
	  user     : 'root',
	  password : '*****',
	  timezone : 'UTC'
});
 
mysqlConnection.connect();
mysqlConnection.query('use ***');
 
var chat = express(),
    serverAndroid = http.createServer(chat),
    ioAndroid = sio.listen(serverAndroid),
    ent = require('ent'),
    fs = require('fs');
 
 
var groups = {};
var clients = {};
 
ioAndroid.sockets.on('connection', function(socket)
{
	socket.on('online', function(data)
	{	
		clients[socket.id] = socket;
		if(!groups[data.id_groupe]) {
			groups[data.id_groupe] = {members: new Array};
		}
 
		groups[data.id_groupe].members.push(socket.id);
 
		mysqlConnection.query('SELECT pseudonyme, message, write_at FROM message AS m LEFT JOIN groupe_composition AS g ON m.id_groupe = g.id_groupe AND m.id_user = g.id_user WHERE m.id_groupe=? ORDER BY write_at LIMIT 30', data.id_groupe, function(err, result) {	
			socket.emit('history', result);
		});		
 
	});	
 
 
	socket.on('messages', function(data)
	{	
 
		mysqlConnection.query('INSERT INTO message (id_groupe, id_user, message) VALUES (?, ?, ?)', [ data.id_groupe, data.id_user, data.message ], function(err, result) {	
			groups[data.id_groupe].members.forEach(function(id_user) 
			{ 
				var now = new Date();
				clients[id_user].emit('messages',{pseudonyme: data.pseudonyme ,message: data.message, write_at: dateFormat(now, "yyyy-mm-dd'T'HH:MM:ss")});			 
			});
		});
 
	});
});
serverAndroid.listen(2101);
Ce serveur nodejs lance bien l'écoutes sur le port 2101. J'ai pinggé ce port et il est bien ouvert, cependant lorsque je fait appel dans mon application à IOSocket quand il essaye de se connecter la conexion n'aboutit pas. Et transfert directement vers la fonction onError().

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
 
try {
            socket = new SocketIO("http://****************:2101");
			socket.connect(new IOCallback() {
 
				@Override
				public void on(String arg0, IOAcknowledge arg1, Object... arg2) {
 
                    final Object[] arguments = arg2;
 
					if (arg0.equalsIgnoreCase("history")) {
 
						((Activity) currentContext)
						.runOnUiThread(new Runnable() {
 
							public void run() {
 
								JSONArray json_history;
								try {
									json_history = new JSONArray(arguments[0]
											.toString());
 
									for(int i = 0; i < json_history.length(); i++) 
									{
										JSONObject json = (JSONObject) json_history.get(i);										
 
										Message message = new Message(json.getString("pseudonyme"), json.getString("message"), json.getString("write_at"));
 
										messageReceived(message);
 
										lvChat.setSelection(lvChat.getAdapter().getCount()-1);
 
									}
 
								} catch (JSONException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								}
 
							}
 
						});
					}					
					else if (arg0.equalsIgnoreCase("messages")) {
 
						((Activity) currentContext)
								.runOnUiThread(new Runnable() {
 
									public void run() {
 
										JSONObject json;
										try {
											json = new JSONObject(arguments[0]
													.toString());
 
											Message message = new Message(json.getString("pseudonyme"), json.getString("message"), json.getString("write_at"));
 
											messageReceived(message);
 
											lvChat.setSelection(lvChat.getAdapter().getCount()-1);
										} catch (JSONException e) {
											// TODO Auto-generated catch block
											e.printStackTrace();
										}
 
									}
 
								});
 
					}
				}
 
				@Override
				public void onConnect() {
					try {
						socket.emit("online", new JSONObject().put("id_groupe", groupeSelect.getGroupe_id()));
 
					} catch (JSONException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
 
				}
 
				@Override
				public void onDisconnect() {
                    System.out.println("disconnected");
					// TODO Auto-generated method stub
 
				}
 
				@Override
				public void onError(SocketIOException arg0) {
                    System.out.println("Error");
					// TODO Auto-generated method stub
 
				}
 
				@Override
				public void onMessage(String arg0, IOAcknowledge arg1) {
				}
 
				@Override
				public void onMessage(JSONObject arg0, IOAcknowledge arg1) {
 
				}
			});
		} catch (MalformedURLException e) {
            System.out.println("Error URL");
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
Voici le log de ma console Android Studio :

08-04 19:47:49.112 23193-24934/********** I/System.out﹕ Error
08-04 19:47:49.112 23193-24934/********** I/io.socket﹕ Cleanup

Je n'ai pas d'erreur dans mes logs coté serveur. Est ce que quelqu'un est déjà tombé sur un problème similaire, est ce dû à un paramétrage réseau du serveur ?

Merci d'avance pour vos lumières