Sails.js 0.10 插座未连接
Sails.js 0.10 sockets not connecting
由于有关 sails 套接字实现的文档已过时,我很难获得基本的 'connect' 消息。这是我的 node.js 服务器端代码:
sails.sockets.on('connection', function(socket){
sails.log.info('socket connected');
//create room and broadcast a welcome message
socket.emit('user joined', {'message': 'Welcome to ' + roomName});
socket.join(roomName);
socket.broadcast.to(roomName).emit('user joined', {'message': 'Welcome to ' + roomName});
});
我的客户端:
var sock = io.connect('http://localhost:8888');
sock.on('connection', function(socket){
console.log('conected to server');
});
sock.on('user joined', function (json) {
console.log('socket: ' + json);
});
我确实在启动时从 sails 本身收到了 OK 消息,但似乎无法获得我自己的连接:
sails.io.js:200 `io.socket` connected successfully.
(for help, see: http://sailsjs.org/#!documentation/reference/BrowserSDK/BrowserSDK.html)
我尝试使用 socket.io v1 并遇到了同样奇怪的情况。有任何想法吗?谢谢!
在服务器上 config/sockets.js
module.exports.sockets = {
onConnect: function(session, socket) {
sails.log.verbose('>>> socket user connected');
sails.sockets.blast('eventName', dataToBlast);
},
};
文档http://sailsjs.org/#/documentation/anatomy/myApp/config/sockets.js.html
在客户端
io.socket.on('eventName', function(dataToBlast) {
// process dataToBlast
});
文档http://sailsjs.org/#/documentation/reference/websockets/sails.io.js/io.socket.on.html
注意socket需要订阅eventName
。要订阅,您需要创建控制器 SubscribeController.js
并通过套接字请求它的操作。
var SubscribeController = {
sub: function(req, res) {
ModelName.subscribe(
req.socket,
[] /*records to subscribe to or empty array to subscribe to all */,
['eventName'] /* array of strings eventNames */
);
},
};
为了调试客户端,您可以连接到 firehose
,这将为您的客户端提供来自 sails 服务器的所有消息
io.socket.get('/firehose');
io.socket.on('firehose', function newMessageFromSails(message) {
typeof console !== 'undefined' &&
console.log('New message published from Sails ::\n', message);
});
由于有关 sails 套接字实现的文档已过时,我很难获得基本的 'connect' 消息。这是我的 node.js 服务器端代码:
sails.sockets.on('connection', function(socket){
sails.log.info('socket connected');
//create room and broadcast a welcome message
socket.emit('user joined', {'message': 'Welcome to ' + roomName});
socket.join(roomName);
socket.broadcast.to(roomName).emit('user joined', {'message': 'Welcome to ' + roomName});
});
我的客户端:
var sock = io.connect('http://localhost:8888');
sock.on('connection', function(socket){
console.log('conected to server');
});
sock.on('user joined', function (json) {
console.log('socket: ' + json);
});
我确实在启动时从 sails 本身收到了 OK 消息,但似乎无法获得我自己的连接:
sails.io.js:200 `io.socket` connected successfully.
(for help, see: http://sailsjs.org/#!documentation/reference/BrowserSDK/BrowserSDK.html)
我尝试使用 socket.io v1 并遇到了同样奇怪的情况。有任何想法吗?谢谢!
在服务器上 config/sockets.js
module.exports.sockets = {
onConnect: function(session, socket) {
sails.log.verbose('>>> socket user connected');
sails.sockets.blast('eventName', dataToBlast);
},
};
文档http://sailsjs.org/#/documentation/anatomy/myApp/config/sockets.js.html
在客户端
io.socket.on('eventName', function(dataToBlast) {
// process dataToBlast
});
文档http://sailsjs.org/#/documentation/reference/websockets/sails.io.js/io.socket.on.html
注意socket需要订阅eventName
。要订阅,您需要创建控制器 SubscribeController.js
并通过套接字请求它的操作。
var SubscribeController = {
sub: function(req, res) {
ModelName.subscribe(
req.socket,
[] /*records to subscribe to or empty array to subscribe to all */,
['eventName'] /* array of strings eventNames */
);
},
};
为了调试客户端,您可以连接到 firehose
,这将为您的客户端提供来自 sails 服务器的所有消息
io.socket.get('/firehose');
io.socket.on('firehose', function newMessageFromSails(message) {
typeof console !== 'undefined' &&
console.log('New message published from Sails ::\n', message);
});