Итак, у меня есть эта 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 секунд)).
Могу ли я подключить 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.