我正在从我的应用程序中开发聊天部分,并使用node js和socket.io编写了一个基本的套接字服务器。
我在以下站点上对此API进行了测试:https://www.websocket.org/echo.html
这是一些源代码:
var server = require('http').Server(app)
var io = require('socket.io')(server);
app.use(bodyParser.urlencoded({
extended: true,
limit: '50mb',
}));
app.use(bodyParser.json());
app.use("/f",express.static(__dirname+"/files"));
app.use('/api', listenRoutes);
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
server.listen(port);
console.log('Bukalemun RESTful API server started on: ' + port);
我的API在http://localhost:3000上提供
但是,我无法将此API连接到我的flutter应用程序。我使用了各种类型的软件包,包括原始的dart.io,但没有成功。
这是连接我的API的功能:
import 'dart:io';
void setupSocketConnections() async {
Socket socket = await Socket.connect('10.0.2.2', 3000);
print('connected');
// listen to the received data event stream
socket.listen((List<int> event) {
print(utf8.decode(event));
});
// send hello
socket.add(utf8.encode('hello'));
// wait 5 seconds
await Future.delayed(Duration(seconds: 5));
// .. and close the socket
socket.close();
}
如果有任何建议,我将不胜感激。
答案 0 :(得分:1)
主要尝试使用此方法,您可能已经将某些标头与.so一起使用了。
'transports': ['websocket', 'polling']
在您的pubspec.yaml
[socket_io_client: ^0.9.7+2][1]
使用此代码连接您的Flutter应用。
connectToSocket() {
socket = IO.io("http://your url/", <String, dynamic>{
'transports': ['websocket', 'polling'],
});
socket.connect();
}
希望它对您有用!它对我有用。
答案 1 :(得分:0)
我想这是与本地主机相关的错误。当我将服务器部署到heroku并通过此库https://pub.dev/packages/adhara_socket_io#-readme-tab-
将其连接时,问题解决了我在这里分享了我的基本客户示例:https://github.com/isaturk66/dart_socket_client_example
服务器端是基本的socket.io服务器,其官方站点上已经有文档:https://socket.io/docs/