所以,我有这个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连接。
有谁知道为什么会这样?/知道另一种方法吗?
答案 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客户端类。