use*_*500 5 node.js socket.io flutter
我正在使用 flutter socket io 与运行 node/express 的服务器进行通信。
服务器代码:
var express = require('express');
var bodyParser = require('body-parser')
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var mongoose = require('mongoose');
app.use(express.static(__dirname));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}))
var Message = mongoose.model('Message',{
name : String,
message : String
})
app.get('/', (req, res) =>{
res.send("Hello");
});
io.on('connection', () =>{
console.log('a user is connected')
});
var server = http.listen(8080, "<MyServerIP>", () => {
console.log('server is running on port', server.address().port);
});
Run Code Online (Sandbox Code Playgroud)
我的颤振代码:
connect() async {
try {
String connectionPoint = "http://<MyServerIP>:8080";
//Connect to Socket.IO
socket = IO.io(
connectionPoint,
OptionBuilder()
.setTransports(['websocket']) // for Flutter or Dart VM
//.disableAutoConnect() // disable auto-connection
//.setExtraHeaders({'id': tokenId}) // optional
.build());
//socket.connect();
socket.onConnecting((data){
print("Connecting");
});
socket.onConnectError((data) {
print("Error Connecting - > $data");
});
socket.onConnectTimeout((data) => null);
socket.onDisconnect((data) => null);
} catch (e) {}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试连接时,我会收到 onConnectError 中捕获的超时错误。
节点服务器运行的是 debian,我检查了防火墙状态:
To Action From
-- ------ ----
27017 ALLOW Anywhere
80 ALLOW Anywhere
3000 ALLOW Anywhere
22 ALLOW Anywhere
Samba ALLOW Anywhere
8080 ALLOW Anywhere
27017 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
3000 (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
Samba (v6) ALLOW Anywhere (v6)
8080 (v6) ALLOW Anywhere (v6)
3000 ALLOW OUT Anywhere
3000 (v6) ALLOW OUT Anywhere (v6)
Run Code Online (Sandbox Code Playgroud)
当我通过 chrome 打开网址时,我收到“Hello”消息。当我尝试 netcat "nc -vz MyServerIp 8080 时,我连接成功。我还检查了我的本地防火墙,并允许 qemu 到我的 MyServerIp 的所有连接。
只需需要一些帮助来尝试找出为什么我会超时以及是否有任何方法可以调试此问题?
##Edit: MyServerIP 是我服务器的实际服务器IP。
##Edit 2:我使用我的设备来测试它是否是 android 模拟器的本地问题。而且,我收到了同样的错误(我还将设备从我的 WiFi 上取下来以消除任何本地防火墙问题)。我假设这意味着它与我的服务器有关。
use*_*500 14
遇到的问题是由于服务器版本与 Flutter 安装的软件包不匹配造成的。服务器上的版本 > 3。为 flutter 安装的最新版本与服务器版本不兼容。有一个测试版本需要使用。
目前有两种选择:
选项 1:降级服务器版本以使其兼容。
选项 2使用测试版。(这是我采取的选择)。
将 pubspec.yaml 更新为socket_io_client: ^2.0.0-beta.2并连接。
| 归档时间: |
|
| 查看次数: |
4764 次 |
| 最近记录: |