最近因为项目需要所以得使用 websocket 来进行服务器与客户端的通信。使用java 来实现服务端,Android 实现客户端。
刚开始服务端使用 @ServerEndPoint 注解来实现 Websocket 服务端,但是 Android 使用的是 autobahn 实现的客户端,所以一直连接不上,报错为:WebSockets protocol violation 。
后面我把服务端改为使用 @WebServlet 注解,并继承 WebSocketServlet 类来实现,然后就成功连接了。
这是修改之前的:
import org.apache.commons.fileupload.FileItem;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@ServerEndpoint(value = "/socketServerTest")
public class SocketServer {
private int maxFileSize = 1024 * 1024 * 10;
private String userId;
private Session session;
public static Map<String,SocketServer> clients=new ConcurrentHashMap<>();
//连接时执行