Bir müşterinin tarayıcısına bağlanmak için WebSocket kullanarak bir AWS EC2 örneğinde bir Java sunucusu (belirli bir şekilde Jetty) çalıştırıyorum. Bunu yerel olarak yaptığımda (sunucumu bilgisayarımda değil, AWS'de barındırıyor), iyi çalışıyor. Ben EC2 örneği portu 8080WebSocket Handshake Hatası AWS ile
trafiği kabul kullanılabileceğinden eminWebSocket connection to 'ws://Elastic_IP:8080/?username=name_of_user' failed: Error during WebSocket handshake: Unexpected response code: 500
: Ben bir EC2 örneğine kodu taşımak Ancak, ben istemci tarafında aşağıdaki hata iletisi alıyorum
sunucu tarafında sunucu tarafında, bağlantı denendiğinde birçok java.lang.NoClassDefFoundError
alıyorum. Yerel olarak çalıştırdığımda bu hatayı alamıyorum. Belki de EC2 örneğini derlerken bir sorun var, ancak hatasız derler. Eclipse'i yerel olarak kullanarak derledim ve çalıştırıyorum ancak EC2'deki kodu elle derleyip çalıştırıyorum (birçok sınıf yoluna sahip javac
). El ile derlerken hata yaptım, ancak hatanın ne olabileceğinden emin değilim.
Herhangi bir yardım büyük memnuniyetle karşılanacaktır.
DÜZENLEME
başıma biraz sorunsuz Çekimden sonra, ben JSON.ParseException
konunun kaynağı olduğunu fark etti. Sunucu kodundan bu sınıfa tüm çağrıları kaldırdıktan sonra, el sıkışma tamamlandı ve sunucu ile istemci arasında bir bağlantı kurabildim. Ben org.eclipse.jetty.websocket.api.Session
olmak argüman tanımlı görünüyor, ancak çalışma zamanı sırasında argüman aslında org.eclipse.jetty.websocket.common.WebSocketSession
olduğunu
WARN:MyWebSocketHandler:qtp990368553-16: Unhandled Error (closing connection)
java.lang.RuntimeException: Cannot call method public void
MyWebSocketHandler#onMessage(org.eclipse.jetty.websocket.api.Session, java.lang.String) with args:
[org.eclipse.jetty.websocket.common.WebSocketSession, java.lang.String]
: Ben istemciden bir ileti aldığınızda Ancak, ben şimdi şu hata çalıştırıyorum. Bunun nasıl gerçekleştiğine dair bir fikir veya hangisini kullanmalıyım (Session
vs WebSocketSession
)? İhtiyacım olan tek şey sunucu ve istemci arasında dizeleri göndermek.
Tam stacktrace'i verebilir misiniz, böylece hangi sınıfın, özellikle JVM'nin şikayet ettiğini görebilir miyiz? Ayrıca, sunucu kodunuzu yerel olarak çalıştırmak için Eclipse'i kullanmak yerine, EC2 örneğinde olduğu gibi yerel olarak çalıştırmayı deneyebilir misiniz, böylece yerel ortamınız EC2 örneğindeki gibi daha yakın/daha yakın mı? – Castaglia
@Castaglia El sıkışmasının ana sorununu çözdüm (sunucu kodundaki bir ithalatı kaldırmak zorunda kaldım, ancak ithalatla birlikte yerel tarafta çalışıyor), ama başka bir yol bloğuna çarpıyorum. Soruları talihsizliğimi yansıtacak şekilde güncelledim. – skamazin