Sails V0.10-rc7 Get a record from the database using REST Blueprints via Socket.IO

自作多情 提交于 2020-02-06 04:02:32

问题


Sails 0.10.0-rc7

Sails Socket IO : Client not receiving response from server.

Using sails built in blueprints I am attempting to get information from my server using this functionality. (Im looking to use the default behaviour)

Client

//Client on different server (localhost:8000)

//Sails server
var socket = io.connect('http://localhost:1337');

socket.get('/event',function serverSays(err,events){
    if (err)
        console.log(err)

    console.log(JSON.stringify(events));
});

Server

Event Model

module.exports = {

    schema : true,

    attributes: {

        name : {
            type : 'STRING',
            maxLength: 50,
            required: true
        }
    }
};

In the server terminal (logs) :

verbose: client authorized verbose: handshake authorized 4TGNw-ywabWYG9j-AHaC verbose: setting request GET /socket.io/1/websocket/4TGNw-ywabWYG9j-AHaC?__sails_io_sdk_version=0.10.0&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript verbose: set heartbeat interval for client 4TGNw-ywabWYG9j-AHaC verbose: client authorized for verbose: websocket writing 1:: verbose: A socket.io client (4TGNw-ywabWYG9j-AHaC) connected successfully!

BUT the callback on my client is never being called????

It seems as if the client connects with the server..

Any suggestions?

EDIT

I must stress that the client and the sails server are running on different servers. The handshake when performing io.connect(localhost:1337) talks with the server correctly based on the server logs.

Its the subsequent action socket.get("/Event") which does not result in anything. Based on the server logs, I would say that its not ever reaching the server....


回答1:


I thought I would just leave a note as I have my implementation working now.

So as it turns out, I made a fairly embarrassing mistake/assumption.

using Sails js's browser SDK I was connecting to a remote server using:

io.connect("serverurl")

and then happily went about my business attempting to perform various socket functions such as socket.get..

What I did not do is after

io.connect("url") 

I still had to ensure that my app had indeed connected to the server by listening on the socket for the connect event:

socket.on("connect",function())...

Once I had this little piece of the puzzle resolved all went and is going swimmingly!

I must also state that I believe the reason I was running into to this issue was because I was attempting to perform the initial connection and subsequent requests in the sails run (init) function. So my subsequent actions were more than likely executing before the app and the server had successfully established a connection.

I believe had the initial connect (io.connect) and the subsequent actions been executed in separate user flows, all would have been as the connection would have surely been established already.



来源:https://stackoverflow.com/questions/23897311/sails-v0-10-rc7-get-a-record-from-the-database-using-rest-blueprints-via-socket

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!