Всем привет! У меня проблема, уже два дня копаюсь, но так и не решил. Есть сервер на джаве, и есть клиент на скрипте. Проблема в том, что у меня не получается оправить сообщение от сервера к клиенту, хотя когда я отправляю ответные данные для соединения клиенту при подключении - все работает(соединение есть), а далее не могу ничего отправить или принять.
Код сервера:
public class Main {
static List<Client> clients = new ArrayList<Client>();
public static void main (String[] args) throws Exception {
ServerSocket server = new ServerSocket(1340);
while (true) {
final Socket client = server.accept();
Client s = new Client(client);
clients.add(s);
getConnect(clients.get(clients.indexOf(s)));
for (Client c:clients
) {
c.sendMassege("YOU LALKA!!!");//уже не работает
}
}
}
static void getConnect(Client client) throws Exception {
String data = new Scanner(client.in,"UTF-8").useDelimiter("\\r\\n\\r\\n").next();
Matcher get = Pattern.compile("^GET").matcher(data);
if (get.find())
{
Matcher match = Pattern.compile("Sec-WebSocket-Key: (.*)").matcher(data);
match.find();
String response = ("HTTP/1.1 101 Switching Protocols\r\n"
+ "Connection: Upgrade\r\n"
+ "Upgrade: websocket\r\n"
+ "Sec-WebSocket-Accept: "
+ DatatypeConverter
.printBase64Binary(
MessageDigest
.getInstance("SHA-1")
.digest((match.group(1) + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11")
.getBytes()))
)
;
client.sendMassege(response);
}
}
}
class Client {
protected Socket client;
protected InputStream in;
protected OutputStream out;
public Client(Socket client) throws Exception
{
this.client = client;
this.in = client.getInputStream();
this.out = client.getOutputStream();
}
protected void sendMassege(String k) throws Exception
{
if (k != null & k.length() > 0) {
out.write((k+ "\r\n\r\n").getBytes(),0,(k+ "\r\n\r\n").length());
out.flush();
}
}
}
Код клиента:
function connectToServerOne(){
var socket = new WebSocket("ws://localhost:1340/");
socket.onopen = function() {
alert("Соединение установлено.");
};
socket.onclose = function(event) {
if (event.wasClean) {
alert('Соединение закрыто чисто');
} else {
alert('Обрыв соединения'); // например, "убит" процесс сервера
}
alert('Код: ' + event.code + ' причина: ' + event.reason);
};
socket.onmessage = function(event) {
alert(event.data);
if(event.data == "YOU LALKA!!!")
{
socket.Send("NO YOU LALKAQ!");
}
};
socket.onerror = function(error) {
alert("Ошибка " + error.message);
};
}
Писал до этого на С# там все очень просто в этом плане, но необходимо сделать это на Jav`e, вот здесь и споткнулся
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости