簡體   English   中英

從Meteor.js打開Websocket連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM