![](/img/trans.png)
[英]How can i connect a Javascript client to a Python-SocketIO server?
[英]How to connect Java SocketIO to Javascript Server
我有一個 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();
}
}
I've been searching for Javascript Server & Java Client examples but the example on https://github.com/socketio/socket.io-client-java only shows the Java Client example without the Javascript Server code. 當兩者結合時,沒有任何效果。 當我運行這兩個代碼時,我在任何一個終端中都看不到任何東西??? 怎么了???
對於給出的任何答案,請注意我更喜歡使用 Typescript 而不是 Javascript 但兩者都是可以接受的
在更新 Java SocketIO 客戶端后,我找到了答案。 我犯了一些錯誤。
socket.io
是版本 2.*1.*
版本,SocketIO 服務器必須是2.*
版本。 此時, 2.3.0
是最新的 npm package for socket.io
所以安裝它而不是版本3.*
。app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
在此示例中,Javascript 服務器直接渲染 HTML 文件,因此 Java 代碼不能由 Z49A2713B6ACAAAD71D2 服務器運行這就是為什么在創建const io
時,我們應該將其更改為:
const io = require('socket.io')(http, {
cors: { origin: '*' }
})
這允許任何主機(或來源)的代碼訪問 SocketIO 服務器。
這是我的工作 Java 客戶端和 Javascript 服務器的示例,如果有人需要參考
app.js
:
const http = require('http').createServer()
const io = require('socket.io')(http, {
cors: { origin: '*' }
})
io.on('connection', (socket) => {
console.log('Connected to client!')
io.emit('time', Date.now())
})
http.listen(8080, () => console.log('Server running on port 8080'))
App.java
:
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() {
@Override
public void call(Object... args) {
System.out.println("Connected to server!");
}
});
socket.on("time", new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("Time: " + args[0]);
}
});
socket.connect();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.