Je crée une application Android, je veux faire une partie de chat pour elle. Problème, lorsque j'essaie d'envoyer un message,
rien ne s'affiche. Dans la console, aucun message de connexion ne s'affiche.

Donc, j'ai essayé d'ouvrir l'URL dans mon navigateur Web, et ça marche. J'ai un message de connexion.
Si vous posez des questions sur mon code (voir ci-après), j'ai testé mon ListAdapter, il marche. Je suis à peu près
sûr que le problème vient de la communication entre l'application Android et le serveur Web.

Android chat fragment :
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
 
public class ChatFragment extends Fragment {
 
    private ChatFragment activity;
    private EditText input;
    private ImageView fab;
    private ListView listView;
 
    ArrayList<String> userArray = new ArrayList<String>();
    ArrayList<String> msgArray = new ArrayList<String>();
    ArrayList<String> dateArray = new ArrayList<String>();
 
    CustomListAdapter whatever;
 
    private Socket mSocket;
    {
        try {
            mSocket = IO.socket("http://###########");
        } catch (URISyntaxException e) {}
    }
 
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_chat, container, false);
    }
 
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
 
        whatever = new CustomListAdapter(this, userArray, msgArray, dateArray);
 
        this.activity = this;
 
        //Associating visual elements to variables
        fab = (ImageView) getView().findViewById(R.id.fab);
        input = (EditText) getView().findViewById(R.id.input);
 
        //Defining the event for new messages
        mSocket.on("chat message", onNewMessage);
        //Start connection with server
        mSocket.connect();
 
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
 
                //Sending the message to online chat
                attemptSend();
 
                // Clear the input
                input.setText("");
            }
        });
 
    }
 
    private void attemptSend() {
        String message = input.getText().toString().trim();
        if (TextUtils.isEmpty(message)) {
            return;
        }
 
        mSocket.emit("chat message", message);
    }
 
    private Emitter.Listener onNewMessage = new Emitter.Listener() {
        @Override
        public void call(final Object... args) {
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    JSONObject data = (JSONObject) args[0];
                    String username;
                    String message;
                    try {
                        username = data.getString("username");
                        message = data.getString("message");
                    } catch (JSONException e) {
                        return;
                    }
 
                    // add the message to view
                    addMessage(username, message);
                }
            });
        }
    };
 
    public void addMessage(String user, String msg){
 
 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.getDefault());
        String currentDateandTime = sdf.format(new Date());
 
        userArray.add(user);
        msgArray.add(msg);
        dateArray.add(currentDateandTime);
 
 
 
        listView = (ListView) getView().findViewById(R.id.list_of_messages);
        listView.setAdapter(whatever);
 
    }
 
}
Code HTML :
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
 
<!doctype html>
<html>
  <head>
    <title>GamingLink public chat</title>
  </head>
  <body>
    <script src="/socket.io/socket.io.js"></script>
    <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
      $(function () {
        var socket = io();
        $('form').submit(function(e){
          e.preventDefault(); // prevents page reloading
          socket.emit('chat message', $('#m').val());
          $('#m').val('');
          return false;
        });
        socket.on('chat message', function(msg){
          $('#messages').append($('<li>').text(msg));
        });
      });
    </script>
  </body>
</html>
Code NodeJs :
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
 
var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);
 
app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});
 
io.on('connection', function(socket){
  console.log('Un utilisateur c\'est connecté');
  socket.on('disconnect', function(){
    console.log('Un utilisateur c\'est déconnecté');
  });
  socket.on('chat message', function(msg){
    console.log('message: ' + msg);
    io.emit('chat message', msg);
  });
});
 
http.listen(80, function(){
  console.log('listening on *:3000');
});



J'espère que vous pourrez m'aider à résoudre mon bug, je suis vraiment novice dans l'utilisation de websockets.

Merci d'avance. Monsieur TM82.

-