我可以使用套接字将JAVA传递给Javascript吗?

时间:2017-06-14 00:51:43

标签: javascript java node.js sockets

所以,我有这个Java Aplication,它返回了一些数据。这些数据以TXT格式打印并保存在我的PC上。

我想通过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 Class连接NodeJS服务器。 (我正在使用socket.io) 但NodeJS无法识别Java连接。

有谁知道为什么会这样?/知道另一种方法吗?

  

(BUILD SUCCESSFUL(总时间:0秒))。   console

1 个答案:

答案 0 :(得分:2)

  

我可以使用套接字将JAVA与Javascript通信吗?

是和否。是的,您可以使用socket.io从Java与Javascript进行通信。不,您不能使用Java中的普通TCP套接字与socket.io服务器通信。您需要有一个socket.io客户端(使用它所使用的整个协议和连接方案)与socket.io服务器通信。

您的node.js应用正在配置socket.io服务器。这是一个webSocket服务器,它在webSocket数据包之上添加了一些额外的socket.io格式。

您的Java服务器是普通的TCP连接,不适用于socket.io服务器。 Java服务器必须是socket.io客户端才能与socket.io服务器通信。它必须说出正确的协议才能进行沟通。

您可以为socket.io客户端获取Java类,然后它应该能够正确连接到您的socket.io服务器。

请记住,socket.io是webSocket协议之上的一个层,因此您的Java客户端必须说出这两个层,以便与您的nodejs socket.io服务器进行通信。如果要查看webSocket连接的外观,请参阅this article。它以http请求开头,带有升级标头和一些安全标头。然后,服务器以某种方式响应,告诉客户端协议可以从http协议升级到webSocket协议。 Socket.io,然后有一个数据格式。您不必从头开始实现这一点,因为已经存在用于Java的socket.io客户端类。