GVKun编程网logo

javax.websocket客户端简单示例(java websocketclient)

11

本篇文章给大家谈谈javax.websocket客户端简单示例,以及javawebsocketclient的知识点,同时本文还将给你拓展androidwebsocket客户端超时、Delphi的Web

本篇文章给大家谈谈javax.websocket客户端简单示例,以及java websocketclient的知识点,同时本文还将给你拓展android websocket客户端超时、Delphi的WebSocket客户端实现、Golang websocket客户端、html5 – websocket客户端可以从80/443以外的不同端口连接到websocket服务器等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

javax.websocket客户端简单示例(java websocketclient)

javax.websocket客户端简单示例(java websocketclient)

有人可以给我提供一个非常简单的websocket客户端使用示例javax.websocket吗?

我想连接到websocket(ws://socket.example.com:1234),发送消息(添加频道)并收听消息。所有消息(已发送和已收听)均为JSON格式。

顺便说一句,这个库最适合进行简单的websocket通信吗?

android websocket客户端超时

android websocket客户端超时

谢谢阅读!

背景:
我正在为服务器开发一个Android客户端,其中需求是app,需要与基于WebSockets的服务器来回连续交换消息.

实现:对于客户端,我使用适用于Android的weberknecht’s WebSocket客户端库,而服务器是基于Tornado的.

问题:
目前,我通过生成AsyncTask来调用onCreate中的initWebSocketClient.但是,我一直收到客户端超时异常.

Android客户端:

private void initWebSocketClient() {
        Log.e(TAG,"initWebSocketClient");
        try {
            URI url = new URI("ws://192.168.207.84:8080/");
            WebSocket websocket = new WebSocketConnection(url);

            // Register Event Handlers
            websocket.setEventHandler(new WebSocketEventHandler() {
                    public void onopen()
                    {
                            Log.e(TAG,"--open");
                    }

                    public void onMessage(WebSocketMessage message)
                    {
                            Log.e(TAG,"--received message: " + message.getText());
                    }

                    public void onClose()
                    {
                            Log.e(TAG,"--close"); 
                    }
            });

            // Establish WebSocket Connection
            websocket.connect();

            // Send UTF-8 Text
            websocket.send("hello world");

            // Close WebSocket Connection
            websocket.close();
        }
        catch (WebSocketException wse) {
                wse.printstacktrace();
        }
        catch (URISyntaxException use) {
                use.printstacktrace();
        }
    }

龙卷风服务器:

#!/usr/bin/env python

import tornado.ioloop
import tornado.web
import tornado.websocket

class EchoWebSocketHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        print "WebSocket opened"

    def on_message(self,message):
        self.write_message(u"You said: " + message)

    def on_close(self):
        print "WebSocket closed"

application = tornado.web.Application([
    (r"/",EchoWebSocketHandler),])

if __name__ == "__main__":
    application.listen(8080)
    tornado.ioloop.IOLoop.instance().start()

客户超时例外:

01-31 19:28:01.367: W/System.err(5668): de.roderick.weberknecht.WebSocketException: error while creating socket to ws://192.168.207.84:8080/
01-31 19:28:01.386: W/System.err(5668):     at de.roderick.weberknecht.WebSocketConnection.createSocket(WebSocketConnection.java:244)
01-31 19:28:01.386: W/System.err(5668):     at de.roderick.weberknecht.WebSocketConnection.connect(WebSocketConnection.java:83)
01-31 19:28:01.386: W/System.err(5668):     at com.sagar.websockclient.MainActivity.initWebSocketClient(MainActivity.java:55)
01-31 19:28:01.390: W/System.err(5668):     at com.sagar.websockclient.MainActivity.access$0(MainActivity.java:30)
01-31 19:28:01.390: W/System.err(5668):     at com.sagar.websockclient.MainActivity$WebSocketTask.doInBackground(MainActivity.java:75)
01-31 19:28:01.390: W/System.err(5668):     at com.sagar.websockclient.MainActivity$WebSocketTask.doInBackground(MainActivity.java:1)
01-31 19:28:01.390: W/System.err(5668):     at android.os.AsyncTask$2.call(AsyncTask.java:264)
01-31 19:28:01.390: W/System.err(5668):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-31 19:28:01.390: W/System.err(5668):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-31 19:28:01.390: W/System.err(5668):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-31 19:28:01.390: W/System.err(5668):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-31 19:28:01.390: W/System.err(5668):     at java.lang.Thread.run(Thread.java:856)
01-31 19:28:01.390: W/System.err(5668): Caused by: java.net.ConnectException: Failed to connect to /192.168.207.84 (port 8080): connect Failed: ETIMEDOUT (Connection timed out)
01-31 19:28:01.390: W/System.err(5668):     at libcore.io.IoBridge.connect(IoBridge.java:114)
01-31 19:28:01.394: W/System.err(5668):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
01-31 19:28:01.394: W/System.err(5668):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
01-31 19:28:01.394: W/System.err(5668):     at java.net.socket.startupSocket(Socket.java:566)
01-31 19:28:01.394: W/System.err(5668):     at java.net.socket.tryAllAddresses(Socket.java:127)
01-31 19:28:01.394: W/System.err(5668):     at java.net.socket.(Socket.java:177)
01-31 19:28:01.394: W/System.err(5668):     at java.net.socket.(Socket.java:149)
01-31 19:28:01.394: W/System.err(5668):     at de.roderick.weberknecht.WebSocketConnection.createSocket(WebSocketConnection.java:238)
01-31 19:28:01.394: W/System.err(5668):     ... 11 more
01-31 19:28:01.394: W/System.err(5668): Caused by: libcore.io.ErrnoException: connect Failed: ETIMEDOUT (Connection timed out)
01-31 19:28:01.398: W/System.err(5668):     at libcore.io.Posix.connect(Native Method)
01-31 19:28:01.398: W/System.err(5668):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
01-31 19:28:01.398: W/System.err(5668):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
01-31 19:28:01.398: W/System.err(5668):     at libcore.io.IoBridge.connect(IoBridge.java:112)
01-31 19:28:01.398: W/System.err(5668):     ... 18 more

有人可以帮帮我吗?

更新:添加AutoBahn(适用于Android的WebSocket客户端库)实现细节:

AutoBahn客户端

private void connect2() {
        mConnection = new WebSocketConnection();
        final String wsuri = "ws://192.168.0.137:8888/";
        String TAG = "ArticlesListActivity"; 

        try {
            mConnection.connect(wsuri,new WebSocketHandler() {
               @Override
               public void onopen() {
                 Log.e(TAG,"Connected to: " + wsuri);
               }

               @Override
               public void onTextMessage(String payload) {
                  Log.e(TAG,"Message recieved = " + payload);
               }

               @Override
               public void onClose(int code,String reason) {
                  Log.e(TAG,"Connection Lost.");
               }
            });
         } catch (WebSocketException e) {

            Log.d(TAG,e.toString());
         }      
    }

使用此库 – 我能够立即连接到服务器,连接丢失. (请参阅下面的“AutoBahn客户端日志”.切换回weberknecht工作正常.我没有明确地在任何地方调用mConnection.disconnect().所以我不知道连接是如何终止的.

AutoBahn客户端日志

02-27 14:27:36.605: D/de.tavendo.autobahn.WebSocketConnection(27701): created
02-27 14:27:36.656: D/dalvikvm(27701): GC_FOR_ALLOC freed 164K,4% free 9247K/9543K,paused 17ms
02-27 14:27:36.671: D/dalvikvm(27701): GC_FOR_ALLOC freed 7K,4% free 9368K/9735K,paused 14ms
02-27 14:27:36.671: D/de.tavendo.autobahn.WebSocketReader(27701): created
02-27 14:27:36.675: D/de.tavendo.autobahn.WebSocketConnection(27701): WS reader created and started
02-27 14:27:36.675: D/de.tavendo.autobahn.WebSocketReader(27701): running
02-27 14:27:36.675: D/de.tavendo.autobahn.WebSocketWriter(27701): created
02-27 14:27:36.675: D/de.tavendo.autobahn.WebSocketConnection(27701): WS writer created and started
02-27 14:27:36.769: D/de.tavendo.autobahn.WebSocketReader(27701): run() : ConnectionLost
02-27 14:27:36.773: D/de.tavendo.autobahn.WebSocketReader(27701): ended
02-27 14:27:36.777: D/de.tavendo.autobahn.WebSocketConnection(27701): opening handshake received
02-27 14:27:36.777: E/ArticlesListActivity(27701): Connected to: ws://192.168.0.137:8888/
02-27 14:27:36.781: D/de.tavendo.autobahn.WebSocketConnection(27701): fail connection [code = 3,reason = WebSockets connection lost
02-27 14:27:36.784: D/de.tavendo.autobahn.WebSocketReader(27701): quit
02-27 14:27:36.788: D/de.tavendo.autobahn.WebSocketWriter(27701): ended
02-27 14:27:36.792: E/ArticlesListActivity(27701): Connection Lost.
02-27 14:27:36.792: D/de.tavendo.autobahn.WebSocketConnection(27701): worker threads stopped

解决方法

以下是我将如何开始对此进行故障排除:

>您是否尝试在手机(设备)或模拟器上执行此操作?如果您尝试在手机上执行此操作并通过3G连接,则不会发生这种情况.在这种情况下,您尝试从WAN连接到无法正常工作的内部IP地址.
>再次假设您在设备上执行此操作,如果您通过Wifi连接,那么这是另一个故事.确保可以通过192.168.207.84:8080联系服务器.一种快速测试连接的方法(来自您的PC):

telnet 192.168.207.84 8080

如果超时,您知道您的服务器没有响应.当然,这假设您的PC与Wifi网络位于同一子网中.
>如果您尝试从模拟器执行此操作,请按照[2]中的步骤确保服务器可访问,并确保模拟器处于(IP)桥接模式.

总而言之,超时通常发生的主要原因是缺乏服务器可用性(即缺乏连接性).您没有提到网络的详细信息,因此我根据您尝试连接的IP(192.168.207.84)做了一些假设.

Delphi的WebSocket客户端实现

Delphi的WebSocket客户端实现

Delphi有免费的WebSocket客户端实现吗?我发现只有这一个:

WebSockets Delphi Components

但它不是免费的.

解决方法

这是我的开源库:
https://github.com/andremussche/DelphiWebsockets

Golang websocket客户端

Golang websocket客户端

我想使客户端websocket连接到exertnal服务器每个连接= goroutine和阅读器.我在互联网上查看信息,但我发现了如何创建服务器websocket教程.
任何人都可以这么善良,并做一个微不足道的例子,并带我走过.我正在使用标准golang libary https://golang.org/x/net/websocket.

我创建了一些代码,但当我关闭一个连接程序退出EOF信息.我不会发布代码,因为这可能是我第一次尝试的事实.

我知道如何从websocket读取/发送消息,但我不知道如何创建多个连接.

任何信息,例子都会很感激,感谢阅读

解决方法

你可以使用 Gorilla WebSocket library

这是它作为客户使用的example

html5 – websocket客户端可以从80/443以外的不同端口连接到websocket服务器

html5 – websocket客户端可以从80/443以外的不同端口连接到websocket服务器

我是Websocket编程的新手,但我的最新项目需要在Ubuntu Linux Server上部署WebSocket服务器.我从网上读了一些,知道 –

> websocket客户端将通过端口80/443连接到服务器,其协议标识符相应为ws / wss. http://www.websocket.org/aboutwebsocket.html
> Apache / Nginx Web服务器通常会在服务器端侦听80/443,因此我们必须配置Apache / Nginx以支持ws / wss协议,更好地将连接传输到websocket服务器,就像代理一样.
> Apache有一些websocket服务器附加组件,我也知道Nginx 1.3本身支持websocket协议,并且可以配置它以及使用websocket服务器.

基于我所知道的,我认为我可以通过80/443一起部署Apache / Nginx和Websocket服务器.我想知道,如果我们可以毫不费力地使用websocket服务器?我想如果我们可以写一个从其他端口连接到服务器的websocket客户端,那么我们就可以做到.

那么我们可以编写一个websocket客户端来连接不同端口的服务器吗?

解决方法

是.通常可以在任何端口上运行独立的WebSocket服务器.浏览器客户端打开与非HTTP(S)端口上的服务器的WebSocket连接没有问题.

默认端口为80/443的主要原因是它们是最可靠的大规模使用端口,因为它们能够遍历阻止所有其他端口上所有流量的许多企业防火墙.

如果这对您的受众来说不是问题(或者您有基于HTTP的回退),那么为WebSocket服务器使用备用端口是完全合理的(并且更容易).另一种选择是使用80/443端口,但使用单独的IP地址/主机名.

关于javax.websocket客户端简单示例java websocketclient的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于android websocket客户端超时、Delphi的WebSocket客户端实现、Golang websocket客户端、html5 – websocket客户端可以从80/443以外的不同端口连接到websocket服务器等相关知识的信息别忘了在本站进行查找喔。

本文标签: