Sockets yii2中的Socket编程,为移动应用程序提供web服务支持
我需要通过web服务向移动应用程序提供实时数据。我已经在yii2中开发了这个项目,希望实现套接字编程,这样我就可以连接移动应用程序,并可以将更新的实时数据发送到应用程序 详情如下: 我们必须为我们的移动应用程序用户提供实时跟踪功能。 为此,我们将存储移动应用程序用户的当前位置(Lat/long)并将其存储在服务器上。当任何用户想要跟踪他的朋友(即我们应用程序的用户)的位置时,他都可以,为此,我们必须不断将他的朋友的当前位置发送到应用程序,以便他可以在漫游任何地方时看到他在地图上移动 我在谷歌上用Yii2进行socket编程,但在每一个地方我都能通过socket获得聊天功能的示例 任何人都可以帮助那些工作符合我要求的人 套接字编程将数据从服务器发送到移动应用程序客户端Sockets yii2中的Socket编程,为移动应用程序提供web服务支持,sockets,websocket,socket.io,yii2,yii2-advanced-app,Sockets,Websocket,Socket.io,Yii2,Yii2 Advanced App,我需要通过web服务向移动应用程序提供实时数据。我已经在yii2中开发了这个项目,希望实现套接字编程,这样我就可以连接移动应用程序,并可以将更新的实时数据发送到应用程序 详情如下: 我们必须为我们的移动应用程序用户提供实时跟踪功能。 为此,我们将存储移动应用程序用户的当前位置(Lat/long)并将其存储在服务器上。当任何用户想要跟踪他的朋友(即我们应用程序的用户)的位置时,他都可以,为此,我们必须不断将他的朋友的当前位置发送到应用程序,以便他可以在漫游任何地方时看到他在地图上移动 我在谷歌上用
提前谢谢 最后,经过这么多的努力,花了一周的时间在研发上,我终于得到了我需要的东西 在这里,我发布了我为我的需求开发的解决方案,考虑到那些有类似需求的人,可能对他们完全有帮助: Server.js
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var clientsids = {};
var response_array = get_response_array();
server.listen(8786);
io.on('connection', async function (socket) {
var uchannel = socket.handshake['query']['r_var'];
var myid = socket.handshake['query']['myid'];
clientsids[uchannel+'_'+myid] = socket.id;
socket.join(uchannel);
socket.emit('connectSuccess',response_array);
//sending current data to the user
socket.on('currentlocation', function(data) {
console.log("User with id :"+data.myid+ " has shared the location : lat :"+data.lat+",lng :"+data.lng+" in channel :"+data.channel);
//dump user location to a file for future save to the db
fileobj.savelocation(data.myid,data.lat,data.lng);
response_array = get_response_array();
response_array['msg_code'] = 103;
response_array['msg'] = get_msg_code(103);
var datainfo = {};
datainfo['lat'] = data.lat;
datainfo['lng'] = data.lng;
datainfo['channel_name'] = data.channel;
datainfo['u_id'] = data.myid;
response_array['data'] = datainfo;
fileobj.dumpdata("User with id :"+data.myid+" has shared the location : lat :"+data.lat+",lng :"+data.lng+" in channel :"+data.channel+" \n"+JSON.stringify(response_array));
io.to(data.channel).emit(data.channel, response_array); //broadcast the data to all the users in the channel
//console.log('current clients :'+ JSON.parse(clientsids));
});
socket.on('disconnect', function() {
//redisClient.quit();
socket.disconnect('disconnect');
});
}))
Client.php
var room ='';
var myid ='';
var socket ='';
$( document ).ready(function() {
room = $("#channel").val();
room2 = $("#channel2").val();
myid = $("#myid").val();
socket = io.connect('serverip:port',{
query: 'r_var='+room+'&myid='+myid
});
socket.on(room, function (data) {
$( "#notifications" ).prepend( "<p><strong>Message :" + data.msg + " </strong> <strong>Channel :" + data.data.channel_name + "</strong> <strong>Lat :" + data.data.lat + "</strong> <strong>Long :" + data.data.lng + "</strong></p>" );
});
socket.on('connectSuccess', function (data) {
$( "#notifications" ).prepend( "<p><strong>" +data.msg+ "</strong>: ");
});
});
var房间=”;
var myid='';
var套接字=“”;
$(文档).ready(函数(){
房间=$(“#频道”).val();
room2=$(“#通道2”).val();
myid=$(“#myid”).val();
套接字=io.connect('serverip:port'{
查询:“r_var=”+room+”&myid=”+myid
});
插座开(房间、功能(数据){
$(“#通知”).prepend(消息:“+data.msg+”频道:“+data.data.Channel_name+”Lat:“+data.data.Lat+”长:“+data.data.lng+””;
});
socket.on('connectSuccess',函数(数据){
$(“#通知”).prepend(“”+data.msg+”:”);
});
});
为什么不试试ratchet socket@SudharshanNair谢谢你的回复。ratchet还用于聊天系统,该系统涉及一些javascript事件。不支持我的直接要求。不,您可以使用服务器端进行此操作,您可以创建与服务器端的连接,并且您的移动应用程序用户将使用IP(主机名)和端口进行连接。在这种情况下,可以支持多少并发连接?根据我的情况,没有限制