Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
I am currently creating a website on Symfony 4, and I would like to integrate an instant messaging system like messenger, with the possibility to create groups of discussions.
The problem is that I don't know which method to use. Symfony doesn't offer anything for that, and ajax seems to me not optimized at all because of the many requests made to the server.
Should I use websockets coupled to nodeJs?
Or use the Rachet librarie? Because I don't know NodeJs and integrate a new technology into the project may not be suitable for everyone
So, what would be the most optimized system to support a large number of users?
Thank you,
You have 2 options here:
Implement by yourself
In your case you need the following:
Install some XMPP server in your cloud. It could be something like Ejabberd, Prosody, Tigase, Openfire
On client side - use XMPP libs to connect to XMPP server and to send/receive messages. On Web/Web panel - use StropheJS
for any service tasks - there are also XMPP libs for PHP
Use some messaging SaaS platforms
There are also lot's of diff messaging platforms e.g Pusher, Twillio, Layer, ConnectyCube, Applozic etc.
I used ConnectyCube some time ago, they support Messaging, Video Calling and Push Notifications functionality for iOS, Android and Web. They also have some ready code samples available, so can some some time on start. Pricing is a competitive one. So it can be done in the following way:
Javascript/Web Chat SDK and code samples https://developers.connectycube.com/js/messaging
Hope it will be helpful for you
Just use pubnub.com,
it's like 5 lines of code
https://www.pubnub.com/developers/demos/10chat/
These days it would be bizarre to build chat from scratch.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
With classic REST apis it is good practice to add a version to the api url. This version can be fi. embedded in the path (api.myservice.com/v1/dataset) or as a parameter (api.myservice.com/dataset?v=1). When a new version of the api is deployed, it can live side by side with the old version as long as it is needed. Old versions of the API can be marked as deprecated and can be removed eventually.
This gives the frontend a grace period to adapt to the new version of the API, so there is no downtime between an update of the backend, adapting this by the frontend dev and updating by the frontend user.
When we use Firestore or any similar realtime database, the frontend can have direct access to the database. The structure of the database can change, columns or tables can be renamed, moved or deleted. There is no API that abstracts this underlying structure for the frontend. So, what is the best way to add some kind of versioning to frontend - backend communication using realtime databases?
Possible solutions:
Use a REST api anyway as an extra layer with a version included. Disadvantage: with this approach you lose the advantages from a realtime database, such as realtime updates and user management.
Move the abstraction layer to the frontend and expose a minimum required version. If the frontend does not meet this version, the frontend is forced to update. Disadvantage: the frontend is trusted to do the right thing, instead of enforcing it.
Add the version to the project name or the table names. This will result in a lot of extra redundancy, where data have to be kept in sync constantly. This may lead to extra costs and is prone to errors.
Any other?
Neither of these options seem like good ideas to me yet. What will be the best solution if a frontend has direct access to the data? I'm aware that this question can be quickly be flagged as 'too broad'. If it is, please advice me how to focus my question.
The typical approach I take is to put a version number of the data model in the database. Whenever a schema change to the database is required, I check if it can be kept backwards compatible. If not, increment the version number.
Either way, the schema is encoded in the security rules of my database. This means that there's no way for a client to write invalid data, as it will be rejected by the security rules.
The clients read the version number, and show a Please upgrade when the version number is higher than what they were built for.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
Here the "List" of firebase features
Analytics
Cloud Messaging
Remote Config
Dynamic Links
Notifications
Invites
Test Lab
Crash Reporting
AdMob
Storage
Realtime Database
Google AdWords
Authentication
App Indexing
However, at least, some of them don't work properly and some do not work at all with react-native.
Let's share here our experience dealing with all these services. I hope, that will clarify, what exactly FB is good for with react-native app.
I'll be storing summary here:
Analytics
Likely supported with third-party library
Cloud Messaging
Likely supported with third-party library
Remote Config
Not supported
Dynamic Links
Not supported
Notifications
Likely supported with third-party library
Invites
Not supported
Test Lab
Not supported
Crash Reporting
Likely supported with third-party library
AdMob
Likely supported with third-party library
Storage
I guess, now it's fully supported?
Realtime Database
Web (JS) SDK does not support: offline data persistence
Google AdWords
Authentication
Google, Facebook (etc.) auth is not supported at all. Possible solutions include third-party libraries, firebase-native-sdk bridges etc. There are not well documented solution atm.
App Indexing
Likely supported with third-party library
Check out react-native Firestack. Its currently being worked on but most features are supported for both Android and iOS. I recently used this react-native library for a production application for my company and supports many of the options you listed that you believed were not supported. According to the documentation Firestack provides
Complete FirebaseModule functionality
I have used Firebase authentication, Facebook authentication, Firebase storage, Firebase database, and Firebase notifications all with the Firestack framework.
Another reason I would use this library is it contains the individual modules you listed above but in a centralized repository so you do not have to import many different libraries and deal with their possible incompatibilities and differences in syntax.
https://github.com/davecoates/rn-firebase-bridge/
Here is another one. React Native Firebase Bridge which supports Persistent data. You guys wanna check it out.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
I'm making an app with a friend. I have a server which supports PHP and MySQL which my app is based on.
So we need to collaborate when making the app.
We are using Dreamweaver and NetBeans and apps on our phones...
The question is:
Is it secure to put the app we are developing on the web while its under development, and what should we use to protect it from the outside world?
Will Password Protected FTP be a good solution? or HTTP with a password protected folder?
I have seen there is a problem in HTTP protected folders. The login accepts a some other passwords too. Like if the password is helloworld123 and you login with helloworld it would accept and login?
SO I think HTTP will not be a good solution. And if it is then how should i make it more secure?
So what should I use? FTP or HTTP? thanks...
If you are developing an application, you should really be developing it locally.
You will rapidly tire of testing a change by uploading it to a remote server.
Additionally, what happens if your friend makes a change, how do you know that he has made that change? You will very quickly get collisions in code which totally ruin your collaboration.
So first of all, you should both install a LAMP/MAMP/WAMP stack locally. You should be testing everything locally, and you don't need to publish it to a server to test.
Then, you should be using some kind of version control in order to add any changes you make to a remote repository. This means that then you and your friend can work in isolation from each other, and then commit your own changes to a repository, and then you can merge the branches as you go.
When your application is then finished, you can then start to think about putting it into a production ready state by adding it to a server.
Sign up for an account at GitHub.com read as much as you can about how version control works, because if you intend to work together on anything you need to wrap your head around it.
If possible I'd always reccomend using localhost and syncing with Dropbox or any similar app. Otherwise you can try .htaccess to prevent anyone other than you and your friend from accessing your page.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
We have a custom CRM solution that among several things handles our call-center. That is, each call-center operator gets a queue of people (potential customers) to call based on a number of configurable rules. For example, certain operators only handle certain types of users. Call queues are ordered by call-time taking timezones into account.
EDIT: Operators dial manually. We're currently not interested in automating this.
Now we want to replace this call-center subsystem because it has several bugs, its implementation is very messy and the original developers left years ago.
So we're trying to decide whether to build this ourselves from scratch or integrate another CRM (like SugarCRM) for this specific task only.
But I'm totally ignorant about SugarCRM. Does it provide such a module? Is the SugarCRM API flexible enough to handle different rules to select and order a call queue? We're a .NET shop so we don't want to mess with SugarCRM's code. Or is there any other similar CRM you can recommend for this task? Where do I start?
Thanks in advance
If you are a .NET shop, is there a reason you've not mentioned MS Dynamics CRM ?
While there is a cost associated with it, there is a huge amount of customisation you can do, and if, at some point, you decide to look at telephony, it'd be straightforward to do that too.
I have built CRM systems that integrate with a PBX based dialing system. We had a lot of success with home grown systems.
I would advocate a build from my personal experience for the CRM portion.
What you are asking about, however, is the Dialing side of the system. This can be built as well - the API's for the Dialogic cards lend themselves nicely to .Net implementations. Now that is going to take some work, and most cheap dialers have some decent functionality out of the box to do what we want it to do.
It is when you get to complex functionality that they give up the ghost and by that time you are already so far tied into them that going into a new system is not feasible. I have seen this happen over and over again too.
If you have decent talent on hand, I would advocate writing the dialing system as well if you see yourself having to handle issues more intricate than your basic off-the-shelf dialer can handle.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
What's the best way to push info from a server to a web client? I know it's possible to setup sockets with Silverlight and Flash but I want to stay way from those two technologies.
Gmail seems to do a great job of polling the servers for updated emails and even their chat programs work great (all working in my web browser). Any ideas on the best way to do something like this but using asp.net?
Edit:
If I have to poll, i'd like to poll the server every 2 or 3 seconds. So I'm not sure how to do this without bringing the web server to it's knees under heavy usage.
Since you mention ASP.NET you should be using SignalR.
See my other answer here: Instant notifications like Facebook
The push technique you are looking for is called Comet. See this article for some pointers.
I would create a script callable Web Service and use JQuery.
Here's a good guide on using JQuery to call an ASP.NET (ASMX) web service:
http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/
Now, you would just poll this web service at whatever interval makes sense for your application.
Also, the problem with ASP.NET AJAX is it's a bit top heavy. By using JQuery, you can call your web service from a regular ASP.NET web form, from a View in MVC, or actually using any other web technology (classic ASP, PHP, whatever) all from the client side using just, in my view, the best javascript framework around. :)
Try out WebSync, a scalable comet server built for .NET/IIS. It'll let you push data nicely from the server, and integrates super easily with ASP.NET projects (a couple web.config entries is all it takes).
PokeIn is a reverse ajax library for ASP.NET & Mono. It has various capabilities like .NET to JSON vice versa. You may download sample projects from here
To do that, use ASP.NET 3.0/3.5 or if you are using earlier versions, use ASP.NET Ajax. However both examples listed by you, are using Ajax to pull information, not push it.