我的应用程序,使用套接字。io,无法连接到节点。js服务器。
服务器node.js
var app = require('http').createServer()
var io = require('socket.io')(app);
app.listen(1000);
io.on('connection', function (client) {
client.name = client.remoteAddress + ':' + client.remotePort;
console.log(client.name + ' connected!');
client.on('sensorChanged', function (data) {
console.log("HERE");
console.log(data);
});
});
Android应用程序:
SocketIO socket = new SocketIO();
try {
socket.connect("http://localhost:1000/", this);
txtView.setText("connected");
} catch (MalformedURLException e) {
e.printStackTrace();
}
socket.emit("sensorChanged", "argument1");
当我连接到服务器时,服务器不会说“socket.name connected”,也不会发出事件“sensorChanged”。问题出在哪里?
正在建立套接字。从Android设备到本地节点服务器的IO连接
确保你已经通过gradle安装了socket.io-client-java。
B.确保您已为设备启用internet访问。
<!-- AndroidManifest.xml -->
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="...">
<uses-permission android:name="android.permission.INTERNET" />
<application ...>
...
</application>
</manifest>
C.确保运行服务器的端口已打开。
D.使用计算机网络ip地址连接到本地服务器。
你想连接到超文本传输协议://
通过
http://localhost:3000
将不起作用,因为“localhost”指的是设备本身。
E.在设备上测试连接。
在服务器上设置一个简单的路由GET/status
,它只返回200
导航到http://
F.现在,您应该能够将android socket客户端连接到节点socket服务器。
// Node.js App
let SocketIO = require('socket.io');
let ioServer = SocketIO(server);
console.log('Socket Server waiting for connections');
ioServer.on('connection', function (socket) {
console.log(`Socket Client connected with id=${socket.id}`);
});
-
// Android App
import io.socket.client.Socket;
import io.socket.client.IO;
import io.socket.emitter.Emitter;
import android.util.Log;
public class SocketIO implements Runnable {
@Override
public void run() {
final Socket socket;
try {
socket = IO.socket("http://<IPv4 Address>:<port>");
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.d("TAG", "Socket Connected!");
socket.disconnect();
}
});
} catch(Exception e){
Log.e("Error", e.toString());
}
}
}
使用IP地址:10.0.2.2用于AVD
如果在同一网络上使用外部设备,请使用服务器机器的本地IP地址。
在将Android应用程序与Socket连接时,我也遇到了连接问题。IO与我的服务器在同一WiFi上(尽管当我尝试在浏览器中连接到同一URL时,连接仍然有效)。
我在这里找到了解决办法:https://stackoverflow.com/a/50834600/9560885
简而言之,尝试将这一行添加到AndroidManifest中。xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
我的grails 2.1.0应用程序是在cloudfoundry中部署和运行的,使用mysql服务,昨天我做了一些更改,更新后无法再次运行。我没有对数据源进行任何更改。 通过查看tomcat日志,看起来数据库设置在部署时没有被覆盖,如文档中所述,并且存在一个异常消息“无法为连接URL“JDBC:h2:prodDb;MVCC=TRUE”创建类为“com.mysql.JDBC.driver”的JDBC
问题内容: 我无法让我的Android应用程序连接到socket.io聊天服务器。我正在使用由Gottox创建的socket.io-java- client,可以在这里找到:https : //github.com/Gottox/socket.io-java- client 服务器在端口7000上本地运行。我使用的是Android模拟器,因此我使用的是10.0.2.2:7000来访问服务器。 任何
问题内容: 在Fedora 10上编译。 我刚刚启动了我的第一个qt GUI应用程序。我使用了所有默认设置。 它只是一个简单的形式。它构建良好,没有任何错误。但是当我尝试运行该应用程序时。我收到以下消息: 感谢您的任何建议, 问题答案: 造成这种情况的一般原因如下: 未在环境中设置DISPLAY。 解决方案 : (不过,这似乎不是错误的那个,因为它说X试图连接到它。而且,它并不总是0.0,但大多数
我有一个运行在windows机器上的远程FileZilla ftp服务器。ftp服务器需要通过TLS显式ftp。协议是FTP而不是SFTP。我无法更改此服务器的设置。我可以使用filezilla gui客户端连接到此服务器。 现在,我需要通过使用org的java应用程序连接到FileZilla服务器。阿帕奇。平民净: 但是当我运行上面的代码时,我得到: 说到: 任何想法如何连接到Filezilla
我们有一个ASP经典Web应用程序在Azure应用服务中成功运行,该应用程序当前使用SQL服务器身份验证来访问AzureSQL数据库。我们需要将身份验证更改为Active Directory用户。我们设法使此应用程序从访问AzureSQL数据库的开发人员工作站工作,请参阅下面的工作和不工作。 *不适用于桌面,也不适用于Azure Conportail。打开"提供商=SQLOLEDB;服务器=tcp