[英]Open a Websocket connection from Meteor.js
我們如何從Meteor打開Websockets連接?
我們可以做類似的事情嗎?
ws = new WebSocket('ws://localhost/path');
ws.on('open', function() {
ws.send('something');
});
ws.on('message', function(message) {
console.log('received: %s', message);
});
錯誤:ReferenceError:未定義WebSocket
使用socket.io npm包
var io = Meteor.require('socket.io')
var socket = io.connect('http://localhost');
錯誤:TypeError:對象#沒有方法“連接”
使用ws npm軟件包
var WebSocket = Meteor.require('ws');
var ws = new WebSocket('ws://localhost');
錯誤:錯誤:找不到模塊“ ../build/default/bufferutil”
我創建了一個新的Meteor包joncursi:socket-io-client
來解決此問題。 請參閱https://atmospherejs.com/joncursi/socket-io-client了解更多詳細信息和示例用法。 由於我已經為您捆綁了NPM二進制文件,因此您不必擔心安裝NPM軟件包,聲明NPM.require()
依賴項等。最重要的是,您可以部署到.meteor.com
而無需順利。
有一個名為Meteor Streams的軟件包,可以使用現有的meteor websocket連接到本地服務器,使您執行類似的操作:
chatStream = new Meteor.Stream('chat');
if(Meteor.isClient) {
sendChat = function(message) {
chatStream.emit('message', message);
console.log('me: ' + message);
};
chatStream.on('message', function(message) {
console.log('user: ' + message);
});
}
我不確定您要連接到另一台服務器還是本地服務器,如果可以連接到另一台服務器,則可以使用您提供的示例。 我建議在客戶端不允許使用websocket的情況下使用其他類似SockJS或socket.io的東西(因此需要websocket仿真)。
根據這個涉及openshift博客帖子的問題的答案,您的答案是:(問題: 如何為客戶端設置Meteor WebSocket端口? )
我為此苦了一段時間,嘗試了不同的方法。 在OpenShift中對我有用的解決方案是:
設置DDP_DEFAULT_CONNECTION_URL變量
//for http process.env.DDP_DEFAULT_CONNECTION_URL = 'http://' + process.env.OPENSHIFT_APP_DNS + ':8000' //for ssl process.env.DDP_DEFAULT_CONNECTION_URL = 'https://' + process.env.OPENSHIFT_APP_DNS + ':8443'
根據此博客文章: https : //www.openshift.com/blogs/paas-websockets
您可以嘗試這里是解決方案: https : //github.com/Akryum/meteor-socket-io
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.