Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Quellcode |
|
1 2 3 4 5 6 7 |
<!DOCTYPE html><html><head> <title>test</title> </head> <body > <div> <input id="textMessage" type="text"> <input type="button" value="Send Message" onClick="sendMessage();"> <br> <textarea id="messagesTextarea" rows="10" cols="50"></textarea> </div> <script type="text/javascript"> var webSocket = webSocket=new WebSocket("ws://localhost/Sim/serverendpointdemo"); var messagesTextarea = messagesTextarea=document.getElementById("messagesTextarea"); webSocket.onopen=function(message) {processOpen(message);}; webSocket.onmessage=function(message) {processMessage(message);}; webSocket.onclose=function(message) {processClose(message);}; webSocket.onerror=function(message) {processError(message);}; function processOpen(message) { messagesTextarea.value +=" Server Connect.... "+"\n"; } function processMessage(message) { messagesTextarea.value +="Server to Client ===> "+ message.data +"\n";} function sendMessage() {if (textMessage.value!="close") { webSocket.send(textMessage.value); messagesTextarea.value +=" Send to Server ===> "+ textMessage.value +"\n"; textMessage.value=""; }else { websocket.close(); } } function nextQuestion() { webSocket.send("nextQuestion"); messagesTextarea.value +=" Send to Server ===> nextQuestion \n"; textMessage.value=""; } function processClose(message) { webSocket.send("Client disconnected......"); messagesTextarea.value +="Server Disconnected... "+"\n"; } function processError(message) { messagesTextarea.value +=" Error.... \n"; } </script> </body> |
Quellcode |
|
1 2 3 4 5 |
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; @ServerEndpoint("/serverendpointdemo")public class ServerEndpointDemo { @OnOpen public void handleOpen() { System.out.println("Client is now connected..."); } @OnMessage public String handleMessage(String message) throws IOException { String replyMessage = "Client to Server===> "+ message; return replyMessage; } @OnClose public void handeClose() { System.out.println("Client is now disconnected."); } @OnError public void handleError(Throwable t) { t.printStackTrace(); }} |
Danke für die schnellen Antworten.Er benutzt websockets, du sollte dies nicht sein Problem sein.. also zumindest nicht wenn er sie richtig einsetzt. Er muss sich nur die Verbindung merken/halten solange er sie braucht. Ehrlich gesagt verstehe ich seine Frage nicht, zumindest nicht genau wo das Problem liegt.
Danke für die schnellen Antworten.Er benutzt websockets, du sollte dies nicht sein Problem sein.. also zumindest nicht wenn er sie richtig einsetzt. Er muss sich nur die Verbindung merken/halten solange er sie braucht. Ehrlich gesagt verstehe ich seine Frage nicht, zumindest nicht genau wo das Problem liegt.
Ehrlich gesagt war das meine Frage. Wie ist es Programmiertechnisch möglich, sich mehrere Verbindungen zu merken, halten und jederzeit beliebig über diese Verbindungen Kontakt zu den Clients auf zu nehmen? Momentan habe ich nur eine handleMessage Methode, deren return Wert automatisch an den aktuellen Client gesagt wird.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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; @ServerEndpoint("/serverendpointdemo") public class ServerEndpointDemo { @OnOpen public void handleOpen() { System.out.println("Client is now connected..."); }@OnMessage public String handleMessage(String message) throws IOException { String replyMessage = "Client to Server===> " + message; return replyMessage; }@OnClose public void handeClose() { System.out.println("Client is now disconnected."); }@OnError public void handleError(Throwable t) { t.printStackTrace(); } } |
Ja, aber ich habe nur einen return Wert und kann so nur dem aktuellen Client antworten. Also gibt es eine Möglichkeit mehrere Clients über ein Ereignis zu informieren? Kann der Server nur antworten, wenn er eine Anfrage bekomm?Die Funktionen bekommen optional einen weiteren Parameter vom Typ Session. Damit kannst du zuordnen welche Kommunikation zusammengehört.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »H5::« (23.09.2015, 00:49)
Ja, aber ich habe nur einen return Wert und kann so nur dem aktuellen Client antworten. Also gibt es eine Möglichkeit mehrere Clients über ein Ereignis zu informieren? Kann der Server nur antworten, wenn er eine Anfrage bekomm?Die Funktionen bekommen optional einen weiteren Parameter vom Typ Session. Damit kannst du zuordnen welche Kommunikation zusammengehört.
Gibt's eine Dokumentation für javax.Socket? Am besten auf deutsch mit Beispielen. Ty
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class ConnectionHandler { private LinkedList< Session > clients; public ConnectionHandler() { clients = new LinkedList<Session>(); } /** * Für Infos zur Session klasse siehe * @link https://docs.oracle.com/javaee/7/api/javax/websocket/Session.html */ @OnOpen public void handleOpen(Session session, EndpointConfig config) { System.out.println("New client detected with unique id "+session.getId()); // Füge zu den clients hinzu clients.AddLast(session); } |
Werbeanzeige