我有一个javascript服务器 server.js
```
const http = require("http").createServer()
const io = require("socket.io")(http)
io.on("connection", socket => {
console.log("a user connected")
})
http.listen(3000, () => {
console.log("listening on *:3000")
})
和一个java客户端 `SocketIO.java` ```
package chess_client;
import java.net.URISyntaxException;
import io.socket.client.IO;
import io.socket.client.Socket;
import io.socket.emitter.Emitter;
public class SocketIO {
private static Socket socket;
public static void main(String[] args) throws URISyntaxException {
socket = IO.socket("http://localhost:3000");
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("Connected!");
}
});
socket.connect();
}
}
我一直在搜索javascript服务器和java客户机示例,但是https://github.com/socketio/socket.io-client-java 仅显示没有javascript服务器代码的java客户机示例。当两者结合时,什么都不起作用。当我运行这两个代码时,我在两个终端上都看不到任何东西!!!怎么了???
对于给出的任何答案,请注意,我更喜欢使用typescript而不是javascript,但两者都是可以接受的
1条答案
按热度按时间u59ebvdq1#
在javasocketio客户端更新之后,我找到了答案。我犯了一些错误。
我需要你的npm套餐
socket.io
第二版*文件上说
1.*
对于java客户机,socketio服务器的版本必须是2.*
. 在这个时候,2.3.0
是最新的npm软件包socket.io
因此,请安装该版本而不是3.*
.我假设java客户机来自不同的主机,因为它不是由服务器本身呈现的。例如,这是官方socketio文档中的代码:
在本例中,javascript服务器直接呈现html文件,因此javascript服务器无法运行java代码。这就是为什么在创建
const io
,我们应该将其更改为:这允许任何主机或源站的代码访问socketio服务器。
如果有人需要这个参考,下面是一个我工作的java客户机和javascript服务器的例子
app.js
:package socket_test;
import java.net.URISyntaxException;
import io.socket.client.IO;
import io.socket.client.Socket;
import io.socket.emitter.Emitter;
public class App {
public static void main(String[] args) throws URISyntaxException {
Socket socket = IO.socket("http://localhost:8080");
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
}