android - autobahn not working with tomcat 7 websocket -


sorry english.

i want program native app in android connect server interactive comunications. websocket tegnology perfect fothis. have installed , working tomcat 7.0.39 in laptop ip 192.168.1.250. have tryed examples echo, snake, etc , works fine using ws://localhost:8080/.... , using ws://192.168.1.250:8080/...

i'm using autobahn eclipse connect server. have installed apk in android mobile autobahn client websocket sample , connects withn ws://echo.websocket.org.

the problem android server (in laptop) not work. android ws://echo.websocket.org works fine (i supose autobahn example works well), server works fine because de examples comes tomcat work fine.

because have make intesive work information travel between server , clients, can't use javascript on server side, need java servlets or others work databases, files ando on.

what wrong? firewall off, , wireshark show me how android client try connect laptop server ( don't anderstand wireshark info ) connection loses.

this android code:

    package com.example.autobahnandroiddemo;      import de.tavendo.autobahn.websocketconnection;     import de.tavendo.autobahn.websocketexception;     import de.tavendo.autobahn.websockethandler;     import android.app.activity;     import android.content.sharedpreferences;     import android.os.bundle;     import android.util.log;     import android.view.gravity;     import android.view.menu;     import android.view.menuinflater;     import android.view.menuitem;     import android.view.view;     import android.widget.button;     import android.widget.edittext;     import android.widget.textview;     import android.widget.toast;       public class mainactivity extends activity {         static final string tag = "de.tavendo.autobahn.echo";        private static final string prefs_name = "autobahnandroidecho";         static edittext mhostname;        static edittext mport;        static textview mstatusline;        static button mstart;         static edittext mmessage;        static button msendmessage;         private sharedpreferences msettings;         private void alert(string message) {           toast toast = toast.maketext(getapplicationcontext(), message,         toast.length_short);           toast.setgravity(gravity.center_vertical | gravity.center_horizontal, 0, 0);           toast.show();        }         private void loadprefs() {            mhostname.settext(msettings.getstring("hostname", ""));           mport.settext(msettings.getstring("port", "9000"));        }         private void saveprefs() {            sharedpreferences.editor editor = msettings.edit();           editor.putstring("hostname", mhostname.gettext().tostring());           editor.putstring("port", mport.gettext().tostring());           editor.commit();        }         private void setbuttonconnect() {           mhostname.setenabled(true);           mport.setenabled(true);           mstart.settext("connect");           mstart.setonclicklistener(new button.onclicklistener() {              public void onclick(view v) {                 start();              }           });        }         private void setbuttondisconnect() {           mhostname.setenabled(false);           mport.setenabled(false);           mstart.settext("disconnect");           mstart.setonclicklistener(new button.onclicklistener() {              public void onclick(view v) {                 mconnection.disconnect();              }           });        }         private final websocketconnection  mconnection = new websocketconnection();         private void start() {            final string wsuri = mhostname.gettext() + ":" + mport.gettext();            mstatusline.settext("status: connecting " + wsuri + " ..");            setbuttondisconnect();            try {              mconnection.connect(wsuri, new websockethandler() {                 @override                 public void onopen() {                    mstatusline.settext("status: connected " + wsuri);                    saveprefs();                    msendmessage.setenabled(true);                    mmessage.setenabled(true);                 }                  @override                 public void ontextmessage(string payload) {                    alert("got echo: " + payload);                 }                  @override                 public void onclose(int code, string reason) {                    alert("connection lost.");                    mstatusline.settext("status: ready.");                    setbuttonconnect();                    msendmessage.setenabled(false);                    mmessage.setenabled(false);                 }              });           } catch (websocketexception e) {               log.d(tag, e.tostring());           }        }         @override        public void oncreate(bundle savedinstancestate) {            super.oncreate(savedinstancestate);           setcontentview(r.layout.activity_main);            mhostname = (edittext) findviewbyid(r.id.hostname);           mport = (edittext) findviewbyid(r.id.port);           mstatusline = (textview) findviewbyid(r.id.statusline);           mstart = (button) findviewbyid(r.id.start);           mmessage = (edittext) findviewbyid(r.id.msg);           msendmessage = (button) findviewbyid(r.id.sendmsg);            msettings = getsharedpreferences(prefs_name, 0);           loadprefs();            setbuttonconnect();           msendmessage.setenabled(false);           mmessage.setenabled(false);            msendmessage.setonclicklistener(new button.onclicklistener() {              public void onclick(view v) {                 mconnection.sendtextmessage(mmessage.gettext().tostring());              }           });        }         @override        protected void ondestroy() {            super.ondestroy();            if (mconnection.isconnected()) {               mconnection.disconnect();            }        }         @override        public boolean oncreateoptionsmenu(menu menu) {            menuinflater inflater = getmenuinflater();            inflater.inflate(r.menu.main_menu, menu);            return true;        }         @override        public boolean onoptionsitemselected(menuitem item) {           switch (item.getitemid()) {              case r.id.quit:                 finish();                 break;              default:                 return super.onoptionsitemselected(item);           }           return true;        }      } 

and servlet tomcat code:

    package servlets;      import org.apache.catalina.websocket.messageinbound;     import org.apache.catalina.websocket.streaminbound;     import org.apache.catalina.websocket.websocketservlet;     import org.apache.catalina.websocket.wsoutbound;      import javax.servlet.http.httpservletrequest;     import java.io.ioexception;     import java.nio.bytebuffer;     import java.nio.charbuffer;      public class simplewebsocketservlet extends websocketservlet {     private static final long serialversionuid = 1l;          @override         protected streaminbound createwebsocketinbound(string string, httpservletrequest hsr) {             return new messageinbound() {                  @override                 protected void onbinarymessage(bytebuffer bb) throws ioexception {                  }                  @override                 protected void ontextmessage(charbuffer cb) throws ioexception {                     system.out.println(cb.tostring());                     wsoutbound outbound = getwsoutbound();                     outbound.writetextmessage(cb);                 }             };         }      } 

i don't know what's wrong. have solution use android client in conjuntion server (java servlets on similar tecnology) through websockets? thanks

i think should have put code of connecting oncreate.


Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -