当前位置: 首页 > 面试题库 >

Android与Node.js的通信

谭昕
2023-03-14
问题内容

我看到有两个类似的线程,但找不到答案。

我正在制作android应用,我想使用node作为服务器进行实时通信。

我真的无法使它正常工作。

可能我把很多事情弄错了,但我想尝试理解。

我的服务器很简单

var http = require('http'),  
io = require('socket.io'),
server = http.createServer(function(req, res){ 
     res.writeHead(200, {'Content-Type': 'text/html'}); 
     res.end(':)'); 
});
server.listen(8080);
var socket = io.listen(server); 
socket.on('connection', function(client){
    client.send("hello");
    console.log("connected!");
});

并且可以正常工作…我通过网络应用程序尝试了此操作,然后就可以连接了。

但是我不能用java ..

我尝试了kryonet,但出现了类似“已连接但注册超时”的异常

我尝试使用weberknecht时遇到“在创建ws://184.xxxxxx:8080的套接字时出错”

我尝试了TooTallNate,没有运气,它只是调用onClose方法。

我尝试了jWebSocket,但无法正常工作…

所以我在这里寻求帮助,有人知道如何完成这项工作吗?有什么建议吗?

PS for TooTallNate我正在使用这样的东西:

Net net = new Net(new URI("ws://184.xxxxxx:8080"),WebSocketDraft.DRAFT76);

问题可能在这里吗?

更新:我处理了!睡个好觉之后,我有了主意,当时我正在使用socket.io,不好的主意…现在我将Node Websocket
Server
与weberknecht一起
使用。服务器看起来像这样:

var ws = require("websocket-server");

var server = ws.createServer();

server.addListener("connection", function(client){
    console.log("new connection");
    client.send("aaaaaa");
    client.addListener("message", function(msg){
    });
});

server.listen(8080);

和客户:

try {
    URI url = new URI("ws://184.106.69.64:8080/");
    WebSocket websocket = new WebSocketConnection(url);
    websocket.setEventHandler(new WebSocketEventHandler() {
        public void onOpen(){
            System.out.println("--open");
        }    
        public void onMessage(WebSocketMessage message){
            System.out.println("--received message: " + message.getText());
        }   
        public void onClose(){
            System.out.println("--close");
        }
    });

    websocket.connect();
    websocket.send("hello world");
}
catch (WebSocketException wse) {
    wse.printStackTrace();
}
catch (URISyntaxException use) {
    use.printStackTrace();
}

问题答案:

我是node-websocket-server(nws)的作者,我非常确定node-websocket-
server工作而socket.io无法工作的原因是由于每个服务器的实现。新创建将自动协商使用的正确草案,并且希望该草案能够对76和75草案达到90-100%的遵守率。

至于socket.io,我不能发表过多评论,但是我最后看的是,它的websocket实现相当差。

目前,我目前正在开发一个名为node-websocket-
protocol的项目,socket.io,faye等将可以使用该项目,以便为他们提供真正可靠且合规的websocket实现。这还将替换版本2.0.0中的node-
websocket-server中的当前实现。

附带说明一下,如果您不想托管自己的Websocket服务器,则可以使用Pusher.com,它实际上是我的雇主。

[更新]至于网络套接字是否是最适合您的应用程序的技术选择,则取决于应用程序需要哪种类型的数据和交互。在移动设备上,如果您只是发送推送通知,则最好使用城市飞艇或通知之类的工具。

问候,米歇尔·史密斯



 类似资料:
  • 本文向大家介绍Vue与Node.js通过socket.io通信的示例代码,包括了Vue与Node.js通过socket.io通信的示例代码的使用技巧和注意事项,需要的朋友参考一下 一、Node中socket.io基础 1、是什么 Socket.IO类库,是在服务器和浏览器之间提供一个共享接口,其可以用于实现以下几种通信方式: HTML5中的WebSocket通信 Flash中使用的WebSocke

  • 使用Nexus 4和最新的Android API level 18与Mifare DESFire EV1 AES标签通信让我头疼。根据恩智浦本机协议,要写入和读取此类标签,必须遵循以下步骤: 选择应用程序 身份验证 写入或读取 我也用ISO 7816-4 APDU结构进行了同样的尝试。奇怪的是,使用Galaxy Nexus不会发生select应用程序的奇怪响应,而是总是写命令一个。

  • 我有Android应用程序,需要与我们的C++库建立unix域套接字连接(使用Android NDK) 如果可能,请分享任何例子

  • 我有一个问题,试图找出最好的方法来完成一个简单的应用程序遵循Android最佳实践。下面是场景: 1)我有一个活动,用户输入一些东西,然后发送到后台服务 我不确定处理这种“事件”的标准方法是什么。您是否必须使用广播监听器和订户或它太多为这个简单的目的?

  • 问题内容: 我刚刚开始接触Node.js。我来自PHP背景,因此我习惯于使用MySQL满足所有数据库需求。 如何在Node.js中使用MySQL? 问题答案: 查看node.js模块列表 node- mysql-实现MySQL协议的node.js模块 node-mysql2 —另一个纯JS异步驱动程序。流水线,准备好的语句。 node-mysql-libmysqlclient —基于libmysq

  • 我想通过USB线实现android应用程序与外部设备之间的音频数据通信。 我看过android USB文档&它是示例代码。我能够在android应用程序中成功地检测和连接外部设备。 编辑: 让我解释一下我到目前为止所做的事情。 我找到了设备和它的接口下面的代码。 Intarface&它的终点细节: