【问题标题】:Socket programming in yii2 to provide web service support to the mobile appyii2 中的 Socket 编程为移动应用程序提供 Web 服务支持
【发布时间】:2018-08-03 12:50:35
【问题描述】:

我需要通过网络服务向移动应用程序提供实时数据。我在yii2中开发了这个项目,想实现socket编程,这样我就可以连接移动应用程序并将更新的实时数据发送到应用程序。

详情: 我们必须向我们的移动应用用户提供实时跟踪功能。 为此,我们存储移动应用用户的当前位置(纬度/经度)并将其存储在服务器上。当任何用户想要跟踪他的朋友(我们应用程序的用户)的位置时,他可以,为此我们必须不断将他朋友的当前位置发送到应用程序,以便他在任何地方漫游时都能看到他在地图上移动。

我有使用 Yii2 进行套接字编程的 google,但我在每个地方都可以通过套接字获取聊天功能的示例。

任何机构都可以帮助完成符合我要求的工作吗?

通过套接字编程将数据从服务器发送到移动应用客户端。

提前致谢。

【问题讨论】:

  • 你为什么不试试棘轮插座socketo.me
  • @SudharshanNair 感谢您的回复。棘轮也用于参与一些 javascript 事件的聊天系统。不支持我的直接要求。
  • 不,您可以在服务器端进行,您可以与服务器端创建连接,您的移动应用用户将使用 IP(主机名)和端口进行连接
  • 这个可以支持多少并发连接?
  • 没有限制

标签: sockets websocket socket.io yii2 yii2-advanced-app


【解决方案1】:

最后,经过这么多努力和一周的研发,我终于得到了我需要的东西。

我在这里发布我为我的要求开发的解决方案,考虑到那些有类似要求的人,可能对他们有帮助:

服务器.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');
});

});

客户端.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>&nbsp;<strong>Channel :" + data.data.channel_name + "</strong>&nbsp;<strong>Lat :" + data.data.lat + "</strong>&nbsp;<strong>Long :" + data.data.lng + "</strong></p>" );
});
socket.on('connectSuccess', function (data) {
   $( "#notifications" ).prepend( "<p><strong>" +data.msg+ "</strong>: ");
});
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多