2013-12-16 14 views
7

Tôi mới sử dụng SailsJs và Socket IO. Tôi muốn thực hiện ví dụ Socket IO dưới đây trong Sailsjs. Ở phía máy chủ, tôi cần thực thi đoạn mã sau. Nhưng tôi không biết nơi để đặt mã này.

Sailsjs Socket IO

 
var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); });


Tôi biết rằng tôi có thể đặt chức năng này bên trong chức năng của Cntroller nhưng nó sẽ thêm người nghe vào mọi yêu cầu mà tôi không muốn.

Client Side:

 


    var socket = io.connect('http://localhost'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 

Chỉ cho tôi nơi để đặt mã phía máy chủ trong sailsjs và giúp tôi thực hiện trên socketIO ví dụ.

+3

Các tuyến đường thực hiện sails.js tất cả các yêu cầu của nó socket.io * qua * giao diện express.js thực . Có một cái nhìn [ở đây] (http://sailsjs.org/#!documentation/sockets) để đọc về cách thực hiện ổ cắm với Sails; trong khi họ cũng hỗ trợ các điều khiển Socket.io gốc, đó có lẽ không phải là nơi tốt nhất để bắt đầu. – brandonscript

+0

@ r3mus Tôi đồng ý.Tôi chỉ cần biết nơi để chạy mã máy chủ SOCKET.IO Native này bên trong sailsjs. Cảm ơn vì đã trả lời. Đánh giá cao. – Dinesh

+1

Tôi sẽ đi qua và xây dựng một dự án cánh buồm cơ bản và xem xét mã để xem nơi các ổ cắm được cấu hình; TBH Tôi chưa thực sự thực hiện bất kỳ công cụ ổ cắm không chuẩn nào với Sails. – brandonscript

Trả lời

6

Vâng, mã của bạn đang đề xuất bạn muốn làm điều gì đó trên connection.

Có tệp nằm ở /config/sockets.js đã được tích hợp sẵn chức năng cho connectdisconnect, có thể bạn đang tìm kiếm điều này.

Nếu không, bạn sẽ muốn đặt nó vào bộ điều khiển "hành động", nếu bạn suy nghĩ sâu hơn về những gì bạn đang cố gắng đạt được thì có thể bạn sẽ cần một hành động mà bạn gọi một lần để xử lý cho bạn.

Nếu bạn kết thúc thử file sockets.js thì bạn nên có cái gì đó trông như thế này

onConnect: function(session, socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
// By default: do nothing 
// This is a good place to subscribe a new socket to a room, inform other users 
// that someone new has come online, or any other custom socket.io logic 
} 
+0

Điều gì sẽ xảy ra nếu bạn có nhiều hàm socket.on mà bạn muốn đặt bên trong? sẽ có rất nhiều mã bên trong onConnect làm chậm mọi kết nối socket? Có chỗ nào khác để đặt mã này vào không? (nhưng không phải bộ điều khiển) là nó ví dụ có thể để đặt mã này trong sockets.js nhưng bên ngoài của OnConnect? – jantar

+0

@jantar theo như tôi biết bạn phải có mọi chức năng "socket.on" duy nhất bên trong chức năng kết nối, không có cách nào khác để làm điều đó, ngay cả khi không có sails.js – iConnor

+0

@iConnor, bạn có thể xem qua không câu hỏi này ? http://stackoverflow.com/questions/37129766/how-to-use-sails-io-js-version-0-11-3-in-node-server –

Các vấn đề liên quan