2017-04-01 56 views
1

我有一個的node.js服務器和我連接socket.io監聽到它。代碼就是這樣。我可以使用泛型方法連接到socket.io服務器嗎?

const server = new Hapi.Server(); 
    server.connection({ 
     "port": config.port 
    }); 

let io = socketio(server.listener); 
io.on("connection", function(socket) { 
     console.log("A user connected"); 

     socket.on("disconnect", function(){ 
      console.log("A user disconnected"); 
     }); 

     // receive message from client 
     socket.on("client-server", function(msg) { 
      console.log(msg); 
     }); 
    }); 

// somewhere to emit message 
io.emit("server-client", "server to client message"); 

通常我使用標準方式連接到websocket服務器。一個例子是這樣的:

<!DOCTYPE html> 
<html> 
    <head><title>Hello world</title></head> 
    <script src="http://localhost:3000/socket.io/socket.io.js"></script> 
    <script> 
    var socket = io(); 
    socket.on('server-client', function(data) {document.write(data)}); 
    socket.emit('client-server', 'test message'); 
    </script> 
    <body>Hello world</body> 
</html> 

它的工作沒有問題。現在,我的同事想從他的FME服務器連接到websocket服務器。根據他的研究,他可以使用的唯一的方式連接到WebSocket服務器使用的URL是這樣的:

ws://localhost:3000/websocket 

我的問題是:是否有連接使用這種類型socket.io服務器監聽的方式字符串?

如果沒有,有沒有一種方法來創建一個網頁套接字服務器ws://host:port URL,也將其連接到我的node.js服務器?

或者,有沒有連接在FME服務器socket.io監聽器的方法嗎?

+1

你的同事需要得到他可以從他的服務器使用socket.io客戶端庫。 Socket.io是對的WebSocket的頂部自己的協議,所以你需要一個socket.io兼容的客戶端庫,以便能夠連接到服務器socket.io。 – jfriend00

+0

我明白了。問題在於他無法在他的FME服務器上進行任何編碼工作。因此他沒有辦法設置一個socket.io客戶端。一個好的新功能是我們可以將一些python腳本部署到FME服務器上。一個python socket.io客戶端可以連接到我在node.js中創建的socket.io服務器嗎? – zhangjinzhou

+0

是的,在Python中有socket.io支持。 – jfriend00

回答

0

告訴Socket.IO只使用的WebSocket,添加此服務器上:

io.set('transports', ['websocket']); 

和客戶端上補充一點:

var socket = io({transports: ['websocket']}); 

現在您只能連接到服務器的WebSocket使用ws協議。

+0

他還需要創建一個客戶端嗎?但他不能做任何編碼。 – zhangjinzhou

相關問題