Добрый вечер прошу помощи в компиляции сервера написанного на java. К серверу будет обращаться отдельное мобильное приложения (мессенджер). Уже пробовал через командную строку (куча ошибок). У меня имеется 2 файлы java:
main.java
Код:
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.websocket.EncodeException;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
@ServerEndpoint("/websocket")
public class main {
private static Set<socketConection> peers = Collections.synchronizedSet(new HashSet<socketConection>());
@OnMessage
public String onMessage(String message, Session session) throws IOException, EncodeException, ParseException {
System.out.println(message);
JSONParser parser = new JSONParser();
Object obj = parser.parse(message);
JSONObject jsonObject = (JSONObject) obj;
String type = (String) jsonObject.get("type");
switch (type) {
case "newMessage":
JSONObject ms = new JSONObject();
ms.put("type", "newMessage");
ms.put("senderId", session.getId());
ms.put("content", (String) jsonObject.get("content"));
sendMessage(ms.toJSONString());
break;
case "newFile":
JSONObject msg = new JSONObject();
msg.put("type", "newFile");
msg.put("senderId", session.getId());
msg.put("content", (String) jsonObject.get("content"));
msg.put("fileName", (String) jsonObject.get("fileName"));
sendMessage(msg.toJSONString());
break;
case "newUser":
String id = (String) jsonObject.get("id");
String name = (String) jsonObject.get("name");
for (socketConection peer : peers) {
if (id.equals(peer.session.getId())) {
peer.name = name;
}
}
JSONArray users = new JSONArray();
JSONObject ob = new JSONObject();
for (socketConection peer : peers) {
users.add(peer.toString());
}
ob.put("type", "newUser");
ob.put("users", users);
sendMessage(ob.toJSONString());
break;
default:
sendMessage(message);
break;
}
return null;
}
@OnOpen
public void onOpen(Session session) throws IOException, EncodeException {
JSONObject message = new JSONObject();
message.put("type", "registration");
message.put("id", session.getId());
session.getBasicRemote().sendObject(message.toJSONString());
socketConection con = new socketConection(session, "");
peers.add(con);
}
@OnClose
public void onClose(Session peer) throws IOException, EncodeException {
socketConection tmp = null;
for (socketConection p : peers) {
if (p.session.getId().equals(peer.getId())) {
tmp = new socketConection(p.session, p.name);
}
}
peers.remove(tmp);
JSONObject message = new JSONObject();
message.put("type", "unregistered");
message.put("id", peer.getId());
sendMessage(message.toJSONString());
}
@OnError
public void onError(Throwable t) throws IOException, EncodeException {
}
private void sendMessage(String mess) throws IOException, EncodeException {
for (socketConection peer : peers) {
peer.session.getBasicRemote().sendText(mess);
}
}
}
socketConection.java
Код:
import javax.websocket.Session;
import org.json.simple.JSONObject;
public class socketConection {
Session session;
String name;
public socketConection(Session session, String name) {
this.session = session;
this.name = name;
}
socketConection(Session session, String string) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public String toString() {
JSONObject s = new JSONObject();
s.put("id", this.session.getId());
s.put("name", this.name);
return s.toJSONString();
}
}