标签: client

GWT客户端和同一类的服务器实现

有没有办法在客户端与服务器上实现不同的类?

为了避免"为什么你想这样做?" 问题..我会详细说明

我正在转换一个非常大的Java客户端/服务器应用程序.目前它使用Swing GUI客户端并通过Spring远程处理(RPC)与服务器通信.使用GWT RPC和Spring服务不是问题,有几个很好的例子可供使用,而且一切似乎都运行良好.

客户端和服务器共有的几个类包含来回传递的数据.这些类还包含一些使用标准JRE类实现的行为.例如,一个类以特定于语言环境的方式包含,解析和格式化日期和时间,包括时区,DST等.我可以重写/重构它,但是应用程序超过1000万SLOC,因此只有数百万个引用这个类,所以重大改写不符合成本效益.

以此为例,GWT为解析和格式化日期提供了出色的i18n支持.但实施方式与JRE的实施方式不同.

所以我正在寻找一种切割方式,我可以将实现注入到我的DateTime类的shell中,具体取决于它是在客户端(使用GWT和本机JS)还是在服务器(使用JRE)中.有一种巧妙的方法吗?也许使用模块文件XXXXX.gwt.xml.我正在寻找通用的解决方案.

gwt client rpc

9
推荐指数
2
解决办法
2856
查看次数

浏览器如何处理XAP包的缓存?

如您所知,您可以构建一个Silverlight XAP包并使用HTML页面或asp.net页面上的object标签引用它.

当用户第一次引用页面时,浏览器从服务器下载XAP包,如果用户刷新同一页面,是重新下载相同的XAP包还是使用缓存版本?

如果用户导航到使用相同XAP包的另一个页面,并且由于用户所在的上一页已经下载了XAP包,浏览器是否使用了缓存版本或转到服务器并再次下载?

如果浏览器一直使用缓存版本,它如何知道何时使用缓存版本以及何时使用新版本的XAP软件包,因为它可能已经使用新的更改进行了重建?是否与包的版本号有关?

browser silverlight client caching xap

9
推荐指数
1
解决办法
4831
查看次数

简单的RTMP Python客户端

我正在寻找一个适当的RTMP python客户端或Python代码示例,至少可以执行以下操作:

  1. 正确握手与Flash服务器
  2. 将正确编码(AMF0或AMF3)"连接"消息发送到服务器(并处理结果)
  3. 发送正确编码的"订阅"消息(并处理结果)

我一直在调查RTMPy,rtmplite,fmspy库,但还没有得到任何工作.不过,rtmplite的AMF0编码功能似乎很好.

谁能指出我正确的方向?

python flash client rtmp

9
推荐指数
1
解决办法
1万
查看次数

使用Ruby中的SSLServer验证客户端证书

下面是我用来设置服务器的代码:

require 'socket'
require 'openssl'

socket = TCPServer.new('127.0.0.1', 4433)

ssl_context = OpenSSL::SSL::SSLContext.new()
ssl_context.cert = OpenSSL::X509::Certificate.new(File.open("ssl/server/server.crt"))
ssl_context.key = OpenSSL::PKey::RSA.new(File.open("ssl/server/server.key"))

ca_cert = OpenSSL::X509::Certificate.new(File.open("ssl/ca/ca.crt"))

ssl_socket = OpenSSL::SSL::SSLServer.new(socket, ssl_context)

Thread.start(ssl_socket.accept) do |s|
    puts "Connected to #{s.peeraddr.last}"

    if s.peer_cert.verify(ca_cert.public_key)
        puts "Certificate verified"
    else
        puts "Certificate invalid"
    end
end
Run Code Online (Sandbox Code Playgroud)

和客户:

require 'socket'
require 'openssl'

socket = TCPSocket.new('127.0.0.1', 4433)

ssl_context = OpenSSL::SSL::SSLContext.new
ssl_context.cert = OpenSSL::X509::Certificate.new(File.open("ssl/client1/client1.crt"))
ssl_context.key = OpenSSL::PKey::RSA.new(File.open("ssl/client1/client1.key"))

ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ssl_context)

ca_cert = OpenSSL::X509::Certificate.new(File.open("ssl/ca/ca.crt"))

ssl_socket.connect

if ssl_socket.peer_cert.verify(ca_cert.public_key)
    puts "Certificate checks out"
else
    puts "Certificate not verified" …
Run Code Online (Sandbox Code Playgroud)

ruby ssl client certificate

9
推荐指数
1
解决办法
3457
查看次数

即使在连接上也不会调用Android Websockets onMessage()

我正在使用websockets进行多人游戏,我需要在服务器上发送多种类型的数据,但是当我连接到服务器时,它应该分别发回一个名称和号码("类型")和("数据")来自连接上的websocket库.我不需要类型,但("数据")对于游戏逻辑实际工作至关重要.

下面是我的websockets onMessage()函数中的代码:

@Override
public void onMessage(String message)
{                       
    try 
    {
         JSONObject json = new JSONObject(message);
         if(json.has("type") && json.has("data"))
         {
             Log.d(TAG, json.getString("type"));
             Log.d(TAG, json.getString("data"));
             playerNum = Integer.parseInt(json.getString("data"));
             Log.d(TAG,"Received... Type : " +json.getString("type")+" Data : "+json.getString("data"));
         }
         if(json.has("Player1TurnOver"))
         {
             player1TurnOver = json.getBoolean("Player1TurnOver");
         }

         if(json.has("Word"))
         {
            String b = json.getString("Word");
            bWord = new char[b.length()];
            for(int i = 0; i < b.length(); i++)
            {
                 bWord[i] = b.charAt(i);
            }
         wordLength = bWord.length;
        }
     }
     catch(JSONException e)         
     {                  
     }              
}
Run Code Online (Sandbox Code Playgroud)

但是,即使客户端有一个监听器,也不会从服务器调用它:

mClient = new WebSocketClient(URI.create("ws://some_ip:8080/wstest"), …
Run Code Online (Sandbox Code Playgroud)

java client android websocket andengine

9
推荐指数
1
解决办法
989
查看次数

Raspberry Pi的SIP-Client可以在命令行下运行吗?

我想使用我的覆盆子pi作为SIP/VOIP-Phone,只需通过SSH控制RPI.

我找到了一些教程,看起来Twinkle是最有用的应用程序之一.

所以我成功地在我的RPI上安装了闪烁,在我的Android-Phone上安装了一个SPI-Client,因为我知道我可以从一个到另一个发送短信.

问题是:我必须使用Twinkel GUI与X-Server转发(目前使用MacOS与X11和iTerm).

但我有点希望自动化整个过程,比如从命令行使用twinkle,用脚本控制它等.

因此,显然不是为此而闪烁的.(甚至没有account-config-file的文档,所以我不得不努力通过x11-forwarding-stuff)

所以,我的最后一个问题是:是否可以通过CLI控制RPI的可比SIP客户端?

任何提示都受到高度赞赏.在谷歌搜索这个问题时,我刚刚发现项目在RPI上使用asterisk-server或将显示附加到它 - 但那不是我想要的......

欢呼和谢谢

client voip sip command-line-interface raspberry-pi

9
推荐指数
2
解决办法
4万
查看次数

Google+与Google Identity Platform API

tl; dr:有人可以解释在这两个平台之间实现客户端Google登录流程的不同之处究竟是什么?

背景故事:

我一直在努力实现客户端Google登录我的网站.首先,我使用标签实施了全球设置的Google+平台,因此可以监控用户会话.得到的信息:https://developers.google.com/+/web/signin/

但是,我遇到了一个问题,如果用户没有登录,网站将自动检查用户登录状态,这导致许多'toastr'消息'Logged out',我在signInCallback函数中实现.这真令人生气.

所以我做了一些研究,偶然发现了他们的"快速启动应用程序"并浏览了它.它比指南更复杂,许多元素都记录在Google Identity Platform上,在这里:https: //developers.google.com/identity/sign-in/web/reference

现在我真的不明白实现他们的登录的正确方法是什么 - 它是轻量级的Google+按钮,带有用户状态的标签回调检查,还是与监听器,gapi实例等所有的强大的GIP方式?这些平台有何不同之处?

javascript client google-plus web google-identity

9
推荐指数
1
解决办法
1845
查看次数

Safari不在服务器端的refresh/onbeforeunload上运行回调函数(调用客户端代码)

我正在尝试在卸载窗口时(即刷新页面时)向数据库发送一些请求.出于某种原因,仅在Safari上,客户端代码被执行,但对服务器的请求永远不会通过.当我在调试器中手动单步执行代码时,服务器确实获得了请求并处理它.

任何人都知道为什么会这样吗?

window.onbeforeunload = function() {
  console.log("inside on before unload");
  var requestParam = new a.ListRequest();
  requestParam.setAction('set_delete');
  
  var callback = function(isSuccess, response) {
    if (isSuccess) {
      //do something
    } else {
      // do something else
    }
  };
  
  // Sends request to server
  a.Fetch.list(requestParam, callback);
  
}
Run Code Online (Sandbox Code Playgroud)

javascript safari client onbeforeunload server

9
推荐指数
1
解决办法
1016
查看次数

Nusoap"SOAP-ENV:Xml是空的,没有解析"消息

我正在尝试使用nusoap实现一个简单的Web服务.服务器:

<?php
require_once "nusoaplib/nusoap.php";

class food {

    public function getFood($type) {
        switch ($type) {
            case 'starter':
                return 'Soup';
                break;
            case 'Main':
                return 'Curry';
                break;
            case 'Desert':
                return 'Ice Cream';
                break;
            default:
                break;
        }
    }
}

$server = new soap_server();
$server->configureWSDL("foodservice", "urn:foodservice");

$server->register("food.getFood",
    array("type" => "xsd:string"),
    array("return" => "xsd:string"),
    "urn:foodservice",
    "urn:foodservice#getFood",
    "rpc",
    "encoded",
    "Get food by type");

@$server->service($HTTP_RAW_POST_DATA);
?>
Run Code Online (Sandbox Code Playgroud)

客户:

<?php
require_once "nusoaplib/nusoap.php";

$client = new nusoap_client("http://localhost/SOAPServer.php?wsdl", true);
$error  = $client->getError();

if ($error) {
    echo "<h2>Constructor error</h2><pre>" . $error . "</pre>"; …
Run Code Online (Sandbox Code Playgroud)

php client soap wsdl nusoap

9
推荐指数
1
解决办法
1万
查看次数

libsqlplus.so:connot open共享对象文件:即使PATH包含路径,也没有这样的文件或目录

我下载了即时Oracle客户端版本11.2.0.4.0( ,,basic 的.rpm文件)由甲骨文网站在Ubuntu.转换成使用后,我安装了它,第一个也是最后一个.sqlplusdevel.rpm.debalienbasicsqlplusdevel

然后我试着运行sqlplus.

但它说 sqlplus64: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

即使我PATH包含了PATH.

下面显示了我PATH和的位置libsqlplus.so.

A@ubuntu:~$ sudo find / -name libsqlplus.so
/usr/lib/oracle/11.2/client64/lib/libsqlplus.so

A@ubuntu:~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/sangmin/eclipse:/usr/lib/oracle/11.2/client64/lib:/usr/lib/oracle/11.2/client64
Run Code Online (Sandbox Code Playgroud)

client shared-libraries oracle11g ubuntu-12.04

8
推荐指数
1
解决办法
2万
查看次数