Как получить данные с Node Server с помощью сокета? - PullRequest
1 голос
/ 20 января 2020

У меня проблема с получением данных с Node-сервера, я искал много ссылок из inte rnet, но я пока не нашел такой, которая могла бы решить мою проблему. это мой нод-сервер

var socket  = require('socket.io');
var express = require('express');
var app     = express();
/*
var options = {
    key: fs.readFileSync('cert/file.key'),
    cert: fs.readFileSync('cert/file.crt')
};
var server  = require('https').createServer(options, app);
*/
var server  = require('http').createServer(app);
var io      = socket.listen( server );
var port    = process.env.PORT || 3000;

//server.listen(port, '103.126.57.4', function () {
server.listen(port, function () {
    console.log('Server listening at port %d', port);
    //console.log('Server listening at port %d', port, server.address());
});


io.on('connection', function (socket) {

console.log( "New client connected !" );
//console.log(socket.handshake.headers.host);

socket.on( 'new_message', function( data ) {
    io.sockets.emit( 'new_message', {
        idleveluser: data.idleveluser,
        nama: data.nama,
        level: data.level,
        idchat: data.idchat,
        pesan: data.pesan,
        file: data.file,
        reply: data.reply,
        created_at: data.created_at
    });
});

socket.on( 'new_chat_kelas', function( data ) {
    io.sockets.emit( data.tabelchat, {
        idleveluser: data.idleveluser,
        nama: data.nama,
        level: data.level,
        idchat: data.idchat,
        pesan: data.pesan,
        file: data.file,
        reply: data.reply,
        created_at: data.created_at
    });
});

socket.on( 'change_chat_status', function( data ) {
    io.sockets.emit( 'change_status'+data.tabelchat, {
        status: data.status
    });
});

/*
socket.on('disconnect', function () {
    console.log( "Client disconnected !" );
});
*/});

И это мой Android код

try {
//if you are using a phone device you should connect to same local network as your laptop and disable your pubic firewall as well
        socket = IO.socket("http://192.168.100.13:3000");
        socket.connect();

    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
    refreshChat(url);
    getTabelKelas();
    getDiskusiChat(sharedDiskusi.getSpdiskusi());


private void getDiskusiChat(String tabelChat) {
    socket.on(tabelChat, new Emitter.Listener() {

        @Override
        public void call(final Object... args) {
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    JSONObject data = (JSONObject) args[0];
                    String jsonStr = data.toString();
                    Log.d("cek", "cek data : "+data);
                    Toast.makeText(mContext, (CharSequence) data, Toast.LENGTH_LONG).show();
                    try {
                        //extract data from fired event
                        String cek = String.valueOf(data.getJSONArray("idleveluser"));
//                            String nickname = data.getString("senderNickname");
//                            String message = data.getString("message");

                            // make instance of message
//
//                            Message m = new Message(nickname,message);
//                            Message m = new Message(nickname,message);
//
//
//                            //add the message to the messageList
//
//                            MessageList.add(m);
//
//                            // add the new updated list to the dapter
//                            chatBoxAdapter = new ChatBoxAdapter(MessageList);
//
//                            // notify the adapter to update the recycler view
//
//                            chatBoxAdapter.notifyDataSetChanged();
//
//                            //set the adapter for the recycler view
//
//                            myRecylerView.setAdapter(chatBoxAdapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                }
            });

        }
    });
}

Я попытался Toast и зарегистрировать его, но не появился. Может ли кто-нибудь помочь мне получить данные? Я путаю, как получить данные, если данные в виде массива. Мне помогает, если кто-то помогает мне. Прошу прощения за моего плохого англ sh брата.

Это мой журнал enter image description here

1 Ответ

0 голосов
/ 20 января 2020

Измените эту строку кода

String cek = String.valueOf(data.getJSONArray("idleveluser"));

на

String cek = String.valueOf(data.getString("idleveluser"));

, поскольку каждый элемент в объекте данных является строкой.

...