Javascript 将netty socketio与Tomcat一起使用
我正在从事一个使用tomcat作为后端的web项目,我正在尝试为我想要实现的一些特性添加netty socketio 这是我给tomcat的主要课程:Javascript 将netty socketio与Tomcat一起使用,javascript,java,sockets,tomcat,Javascript,Java,Sockets,Tomcat,我正在从事一个使用tomcat作为后端的web项目,我正在尝试为我想要实现的一些特性添加netty socketio 这是我给tomcat的主要课程: package launch; import org.apache.catalina.WebResourceRoot; import org.apache.catalina.core.StandardContext; import org.apache.catalina.startup.Tomcat; import org.apache.cat
package launch;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.DirResourceSet;
import org.apache.catalina.webresources.StandardRoot;
import java.io.File;
public class Main {
public static void main(String[] args) throws Exception {
String webappDirLocation = "src/main/webapp";
Tomcat tomcat = new Tomcat();
String webPort = System.getenv("PORT");
if(webPort == null || webPort.isEmpty()) {
webPort = "80";
}
tomcat.setPort(Integer.valueOf(webPort));
StandardContext ctx = (StandardContext) tomcat.addWebapp("", new File("./" + webappDirLocation).getAbsolutePath());
File additionWebInfClasses = new File("target/classes");
WebResourceRoot resources = new StandardRoot(ctx);
resources.addPreResources(new DirResourceSet(resources, "/WEB-INF/classes", additionWebInfClasses.getAbsolutePath(), "/"));
ctx.setResources(resources);
System.out.println("Starting server at port: " + webPort);
//initialize firebase
firebase.Firebase.initialize();
//initialize socket.io
socket.SocketClient.initialize();
tomcat.start();
tomcat.getServer().await();
}
}
这是我的SocketClient类文件:
package socket;
import com.corundumstudio.socketio.Configuration;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.listener.ConnectListener;
public class SocketClient {
static boolean initialized = false;
static SocketIOServer socket;
public static void initialize() {
if(initialized)
return;
Configuration config = new Configuration();
config.setHostname("localhost");
config.setPort(81);
socket = new SocketIOServer(config);
socket.addConnectListener(new ConnectListener() {
@Override
public void onConnect(SocketIOClient socketIOClient) {
System.out.println("connection");
}
});
socket.start();
initialized = true;
}
}
下面是javascript文件:
let gameContainer = document.getElementById("gameContainer")
const socket = io.connect("http://localhost:81")
当我加载页面时,我得到错误:socket.io-1.7.4.js:4948 gethttp://localhost:81/socket.io/?EIO=3&transport=polling&t=NLX8e2-net::ERR\u EMPTY\u响应
我尝试过使用函数io()
,但是这也不起作用。我已验证套接字正在使用端口81。有没有办法解决这个问题