Могу ли я общаться JAVA с Javascript с помощью сокетов?

1

Итак, у меня есть эта Java-реализация, которая возвращает мне несколько данных. Эти данные печатаются в TXT и сохраняются на моем ПК.

Я хочу отправить эту информацию через Socket вместо сохранения в TXT. (Пример ниже)

Джава

public static void main(String argv[]) throws Exception {

        Socket clientSocket = new Socket();
        SocketAddress sockaddr = new InetSocketAddress("localhost", 3000);

        clientSocket.connect(sockaddr);

        clientSocket.close();
}

Узел JS

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

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  console.log('a user connected');
  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    console.log(msg);
  });
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

Проблема в том, что Java-класс соединяет NodeJS-сервер. (Я использую socket.io) Но NodeJS не распознает соединение Java.

Кто-нибудь знает, почему это происходит/знает другой способ сделать это?

(BUILD SUCCESSFUL (общее время: 0 секунд)). Изображение 174551

Теги:
sockets

1 ответ

1

Могу ли я подключить JAVA к Javascript, используя Sockets?

И да и нет. Да, вы можете общаться с Java на Javascript, используя socket.io. Нет, вы не можете использовать простой TCP-сокет в Java, чтобы разговаривать с сервером socket.io. Вам нужно иметь клиент socket.io (со всем используемым протоколом и схемой подключения), чтобы поговорить с сервером socket.io.

Приложение node.js настраивает сервер socket.io. Это сервер webSocket, который добавляет дополнительный формат socket.io поверх пакетов webSocket.

Ваш Java-сервер является простым TCP-соединением и не будет работать с сервером socket.io. Ваш сервер Java должен быть клиентом socket.io, чтобы разговаривать с сервером socket.io. Он должен говорить о правильном протоколе, чтобы общаться.

Вы можете получить Java-класс для клиента socket.io, а затем он должен иметь возможность правильно подключиться к вашему серверу socket.io.

Имейте в виду, что socket.io - это слой поверх протокола webSocket, поэтому ваш клиент Java должен говорить на обоих этих уровнях, чтобы общаться с вашим сервером nodejs socket.io. Если вы хотите посмотреть, как выглядит соединение с WebSocket, см. Эту статью. Он начинается с запроса http, с заголовком обновления и некоторыми заголовками безопасности. Затем сервер реагирует определенным образом на сообщение клиенту о том, что протокол затем может быть обновлен с протокола http до протокола webSocket. Socket.io, затем имеет формат данных поверх этого. Вам не нужно будет реализовывать это самостоятельно с нуля, поскольку уже есть классы классов socket.io для Java.

  • 0
    @IgorSantosdeLima - Это ответило на ваш вопрос?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню